Search in sources :

Example 1 with Triplet

use of org.neo4j.helpers.Triplet 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));
}
Also used : XaDataSourceManager(org.neo4j.kernel.impl.transaction.XaDataSourceManager) Triplet(org.neo4j.helpers.Triplet) ArrayList(java.util.ArrayList) IOException(java.io.IOException) NeoStoreXaDataSource(org.neo4j.kernel.impl.nioneo.xa.NeoStoreXaDataSource) XaDataSource(org.neo4j.kernel.impl.transaction.xaframework.XaDataSource) LogBuffer(org.neo4j.kernel.impl.transaction.xaframework.LogBuffer) StoreId(org.neo4j.kernel.impl.nioneo.store.StoreId) NeoStoreXaDataSource(org.neo4j.kernel.impl.nioneo.xa.NeoStoreXaDataSource) AbstractGraphDatabase(org.neo4j.kernel.AbstractGraphDatabase) HashSet(java.util.HashSet)

Example 2 with Triplet

use of org.neo4j.helpers.Triplet in project graphdb by neo4j-attic.

the class LuceneDataSource method listStoreFiles.

@Override
public ClosableIterable<File> listStoreFiles() throws IOException {
    final Collection<File> files = new ArrayList<File>();
    final Collection<SnapshotDeletionPolicy> snapshots = new ArrayList<SnapshotDeletionPolicy>();
    for (Map.Entry<IndexIdentifier, Triplet<IndexWriter, AtomicBoolean, SnapshotDeletionPolicy>> writer : indexWriters.entrySet()) {
        SnapshotDeletionPolicy deletionPolicy = writer.getValue().third();
        File indexDirectory = getFileDirectory(baseStorePath, writer.getKey());
        for (String fileName : deletionPolicy.snapshot().getFileNames()) {
            files.add(new File(indexDirectory, fileName));
        }
        snapshots.add(deletionPolicy);
    }
    files.add(providerStore.getFile());
    return new ClosableIterable<File>() {

        public Iterator<File> iterator() {
            return files.iterator();
        }

        public void close() {
            for (SnapshotDeletionPolicy deletionPolicy : snapshots) {
                deletionPolicy.release();
            }
        }
    };
}
Also used : Triplet(org.neo4j.helpers.Triplet) ArrayList(java.util.ArrayList) ClosableIterable(org.neo4j.helpers.collection.ClosableIterable) File(java.io.File) Map(java.util.Map) HashMap(java.util.HashMap) SnapshotDeletionPolicy(org.apache.lucene.index.SnapshotDeletionPolicy)

Aggregations

ArrayList (java.util.ArrayList)2 Triplet (org.neo4j.helpers.Triplet)2 File (java.io.File)1 IOException (java.io.IOException)1 HashMap (java.util.HashMap)1 HashSet (java.util.HashSet)1 Map (java.util.Map)1 SnapshotDeletionPolicy (org.apache.lucene.index.SnapshotDeletionPolicy)1 ClosableIterable (org.neo4j.helpers.collection.ClosableIterable)1 AbstractGraphDatabase (org.neo4j.kernel.AbstractGraphDatabase)1 StoreId (org.neo4j.kernel.impl.nioneo.store.StoreId)1 NeoStoreXaDataSource (org.neo4j.kernel.impl.nioneo.xa.NeoStoreXaDataSource)1 XaDataSourceManager (org.neo4j.kernel.impl.transaction.XaDataSourceManager)1 LogBuffer (org.neo4j.kernel.impl.transaction.xaframework.LogBuffer)1 XaDataSource (org.neo4j.kernel.impl.transaction.xaframework.XaDataSource)1