Skip to content

Commit

Permalink
Don't exit the while loop early. Test said behaviour.
Browse files Browse the repository at this point in the history
  • Loading branch information
klaren committed Mar 16, 2018
1 parent 0cc8884 commit c48e55e
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 7 deletions.
Expand Up @@ -190,7 +190,7 @@ public RequestContext flushStoresAndStreamStoreFiles( String triggerName, StoreW
{
doWrite( writer, temporaryBuffer, file, recordSize, fileChannel, fileSize, storeCopyIdentifier );
}
return anonymous( lastAppliedTransaction );
continue;
}
}
}
Expand Down
Expand Up @@ -24,6 +24,10 @@
import org.junit.Test;
import org.junit.rules.RuleChain;
import org.junit.rules.TestRule;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameter;
import org.junit.runners.Parameterized.Parameters;

import java.io.File;
import java.util.ArrayList;
Expand All @@ -38,6 +42,7 @@
import org.neo4j.helpers.Service;
import org.neo4j.helpers.collection.Iterators;
import org.neo4j.io.fs.FileSystemAbstraction;
import org.neo4j.io.pagecache.DelegatingPageCache;
import org.neo4j.io.pagecache.PageCache;
import org.neo4j.kernel.NeoStoreDataSource;
import org.neo4j.kernel.configuration.Config;
Expand Down Expand Up @@ -75,13 +80,23 @@
import static org.neo4j.graphdb.Label.label;
import static org.neo4j.graphdb.factory.GraphDatabaseSettings.record_format;

@RunWith( Parameterized.class )
public class StoreCopyClientTest
{
private final TestDirectory testDir = TestDirectory.testDirectory();
private final PageCacheRule pageCacheRule = new PageCacheRule();
private final CleanupRule cleanup = new CleanupRule();
private final DefaultFileSystemRule fileSystemRule = new DefaultFileSystemRule();

@Parameters
public static StoreCopyRequestFactory[] data()
{
return new StoreCopyRequestFactory[]{LocalStoreCopyRequester::new, LocalStoreCopyRequesterForcePageCache::new};
}

@Parameter
public StoreCopyRequestFactory requestFactory;

@Rule
public TestRule rules = RuleChain.outerRule( testDir ).around( fileSystemRule ).
around( pageCacheRule ).around( cleanup );
Expand Down Expand Up @@ -129,7 +144,7 @@ public void finishRecoveringStore()
}

StoreCopyClient.StoreCopyRequester storeCopyRequest =
spy( new LocalStoreCopyRequester( original, originalDir, fileSystem ) );
spy( requestFactory.create( original, originalDir, fileSystem ) );

// when
copier.copyStore( storeCopyRequest, cancelStoreCopy::get, MoveAfterCopy.moveReplaceExisting() );
Expand Down Expand Up @@ -175,7 +190,7 @@ copyDir, config, loadKernelExtensions(), NullLogProvider.getInstance(), fileSyst
new StoreCopyClient.Monitor.Adapter(), false );

final GraphDatabaseAPI original = (GraphDatabaseAPI) startDatabase( originalDir, recordFormatsName );
StoreCopyClient.StoreCopyRequester storeCopyRequest = new LocalStoreCopyRequester( original, originalDir,
StoreCopyClient.StoreCopyRequester storeCopyRequest = requestFactory.create( original, originalDir,
fileSystem );

copier.copyStore( storeCopyRequest, CancellationRequest.NEVER_CANCELLED, MoveAfterCopy.moveReplaceExisting() );
Expand Down Expand Up @@ -219,7 +234,7 @@ public void finishReceivingStoreFiles()
}

StoreCopyClient.StoreCopyRequester storeCopyRequest =
spy( new LocalStoreCopyRequester( original, originalDir, fileSystem ) );
spy( requestFactory.create( original, originalDir, fileSystem ) );

// when
copier.copyStore( storeCopyRequest, cancelStoreCopy::get, MoveAfterCopy.moveReplaceExisting() );
Expand Down Expand Up @@ -259,7 +274,7 @@ public void shouldResetNeoStoreLastTransactionOffsetForNonForensicCopy() throws
.getInstance(), fileSystem, pageCache, new StoreCopyClient.Monitor.Adapter(), false );
CancellationRequest falseCancellationRequest = () -> false;
StoreCopyClient.StoreCopyRequester storeCopyRequest =
new LocalStoreCopyRequester( (GraphDatabaseAPI) initialDatabase, initialStore, fileSystem );
requestFactory.create( (GraphDatabaseAPI) initialDatabase, initialStore, fileSystem );

// WHEN
copier.copyStore( storeCopyRequest, falseCancellationRequest, MoveAfterCopy.moveReplaceExisting() );
Expand Down Expand Up @@ -352,6 +367,11 @@ private static List<KernelExtensionFactory<?>> loadKernelExtensions()
return kernelExtensions;
}

private interface StoreCopyRequestFactory
{
StoreCopyClient.StoreCopyRequester create( GraphDatabaseAPI original, File originalDir, FileSystemAbstraction fs );
}

private static class LocalStoreCopyRequester implements StoreCopyClient.StoreCopyRequester
{
private final GraphDatabaseAPI original;
Expand All @@ -367,6 +387,11 @@ private static class LocalStoreCopyRequester implements StoreCopyClient.StoreCop
this.fs = fs;
}

protected PageCache getPageCache()
{
return original.getDependencyResolver().resolveDependency( PageCache.class );
}

@Override
public Response<?> copyStore( StoreWriter writer )
{
Expand All @@ -382,8 +407,7 @@ public Response<?> copyStore( StoreWriter writer )
CheckPointer checkPointer =
original.getDependencyResolver().resolveDependency( CheckPointer.class );

PageCache pageCache =
original.getDependencyResolver().resolveDependency( PageCache.class );
PageCache pageCache = getPageCache();

RequestContext requestContext = new StoreCopyServer( neoStoreDataSource, checkPointer, fs,
originalDir, new Monitors().newMonitor( StoreCopyServer.Monitor.class ), pageCache,
Expand All @@ -409,4 +433,25 @@ public void done()
verify( response, times( 1 ) ).close();
}
}

private static class LocalStoreCopyRequesterForcePageCache extends LocalStoreCopyRequester
{
LocalStoreCopyRequesterForcePageCache( GraphDatabaseAPI original, File originalDir, FileSystemAbstraction fs )
{
super( original, originalDir, fs );
}

@Override
protected PageCache getPageCache()
{
return new DelegatingPageCache( super.getPageCache() )
{
@Override
public boolean fileSystemSupportsFileOperations()
{
return false;
}
};
}
}
}

0 comments on commit c48e55e

Please sign in to comment.