private static void waitUntilFinished ( FluoConfiguration config ) { try ( Environment env = new Environment ( config ) ) { List < TableRange > ranges = getRanges ( env ) ; outer : while ( true ) { long ts1 = env . getSharedResources ( ) . getOracleClient ( ) . getStamp ( ) . getTxTimestamp ( ) ; for ( TableRange range : ranges ) { boolean sawNotifications = waitTillNoNotifications ( env , range ) ; if ( sawNotifications ) { ranges = getRanges ( env ) ; // This range had notifications. Processing those notifications may have created // notifications in previously scanned ranges, so start over. continue outer ; } } long ts2 = env . getSharedResources ( ) . getOracleClient ( ) . getStamp ( ) . getTxTimestamp ( ) ; // Check to ensure the Oracle issued no timestamps during the scan for notifications. if ( ts2 - ts1 == 1 ) { break ; } } } catch ( Exception e ) { log . error ( "An exception was thrown -" , e ) ; System . exit ( - 1 ) ; } }
Wait until a scan of the table completes without seeing notifications AND without the Oracle issuing any timestamps during the scan .