use of org.neo4j.kernel.AbstractGraphDatabase in project graphdb by neo4j-attic.
the class MasterUtil method packResponse.
public static <T> Response<T> packResponse(GraphDatabaseService graphDb, SlaveContext context, T response, Predicate<Long> filter) {
List<Triplet<String, Long, TxExtractor>> stream = new ArrayList<Triplet<String, Long, TxExtractor>>();
Set<String> resourceNames = new HashSet<String>();
XaDataSourceManager dsManager = ((AbstractGraphDatabase) graphDb).getConfig().getTxModule().getXaDataSourceManager();
for (Pair<String, Long> txEntry : context.lastAppliedTransactions()) {
String resourceName = txEntry.first();
final XaDataSource dataSource = dsManager.getXaDataSource(resourceName);
if (dataSource == null) {
throw new RuntimeException("No data source '" + resourceName + "' found");
}
resourceNames.add(resourceName);
long masterLastTx = dataSource.getLastCommittedTxId();
for (long txId = txEntry.other() + 1; txId <= masterLastTx; txId++) {
if (filter.accept(txId)) {
final long tx = txId;
TxExtractor extractor = new TxExtractor() {
@Override
public ReadableByteChannel extract() {
try {
return dataSource.getCommittedTransaction(tx);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
@Override
public void extract(LogBuffer buffer) {
try {
dataSource.getCommittedTransaction(tx, buffer);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
};
stream.add(Triplet.of(resourceName, txId, extractor));
}
}
}
StoreId storeId = ((NeoStoreXaDataSource) dsManager.getXaDataSource(Config.DEFAULT_DATA_SOURCE_NAME)).getStoreId();
return new Response<T>(response, storeId, TransactionStream.create(resourceNames, stream));
}
use of org.neo4j.kernel.AbstractGraphDatabase in project graphdb by neo4j-attic.
the class TestIndexDeletion method indexDeleteShouldDeleteDirectory.
@Test
public void indexDeleteShouldDeleteDirectory() {
String otherIndexName = "other-index";
StringBuffer tempPath = new StringBuffer(((AbstractGraphDatabase) graphDb).getStoreDir()).append(File.separator).append("index").append(File.separator).append("lucene").append(File.separator).append("node").append(File.separator);
File pathToLuceneIndex = new File(tempPath.toString() + INDEX_NAME);
File pathToOtherLuceneIndex = new File(tempPath.toString() + otherIndexName);
Index<Node> otherIndex = graphDb.index().forNodes(otherIndexName);
Node node = graphDb.createNode();
otherIndex.add(node, "someKey", "someValue");
assertFalse(pathToLuceneIndex.exists());
assertFalse(pathToOtherLuceneIndex.exists());
restartTx();
// Here "index" and "other-index" indexes should exist
assertTrue(pathToLuceneIndex.exists());
assertTrue(pathToOtherLuceneIndex.exists());
index.delete();
assertTrue(pathToLuceneIndex.exists());
assertTrue(pathToOtherLuceneIndex.exists());
restartTx();
// Here only "other-index" should exist
assertFalse(pathToLuceneIndex.exists());
assertTrue(pathToOtherLuceneIndex.exists());
}
Aggregations