public void start() {
int currentLocal = 0;
try {
//copy to source
if ( new File( sourceDir, "current1").exists() ) {
currentLocal = 2;
}
else if ( new File( sourceDir, "current2").exists() ) {
currentLocal = 1;
}
else {
log.debug( "Source directory for '{}' will be initialized", indexName);
currentLocal = 1;
}
String currentString = Integer.valueOf( currentLocal ).toString();
File subDir = new File( sourceDir, currentString );
FileHelper.synchronize( indexDir, subDir, true, copyChunkSize );
new File( sourceDir, "current1 ").delete();
new File( sourceDir, "current2" ).delete();
//TODO small hole, no file can be found here
new File( sourceDir, "current" + currentString ).createNewFile();
log.debug( "Current directory: {}", currentLocal );
}
catch (IOException e) {
throw new SearchException( "Unable to initialize index: " + directoryProviderName, e );
}
TimerTask task = new FSMasterDirectoryProvider.TriggerTask( indexDir, sourceDir, this );
long period = DirectoryProviderHelper.getRefreshPeriod( properties, directoryProviderName );
timer.scheduleAtFixedRate( task, period, period );
this.current = currentLocal; //write to volatile to publish all state
}
|