@Override public StoreTransaction beginTransaction(BaseTransactionConfig config) throws BackendException { return manager.beginTransaction(config); }
@Override public void clearStorage() throws BackendException { backend.clearStorage(); }
@Override public void close() throws BackendException { manager.close(); } },manager.openDatabase(SYSTEM_PROPERTIES_STORE_NAME),config);
txBuilder.timestampProvider(times); Configuration scanConfig = manager.getFeatures().getScanTxConfig(); if (Configuration.EMPTY != graphConfiguration) { scanConfig = null == scanConfig ? StoreTransaction storeTx = manager.beginTransaction(txBuilder.build()); KeyColumnValueStore kcvs = manager.openDatabase(dbName); manager.getFeatures(), numProcessingThreads, workBlockSize, jobConfiguration, graphConfiguration); addJob(jobId,executor); new Thread(executor).start();
@Override public StoreFeatures getFeatures() { return backend.getFeatures(); }
@Test public void testClearStorage() throws Exception { final String[][] values = generateValues(); loadValues(values); close(); manager = openStorageManagerForClearStorageTest(); assertTrue("storage should exist before clearing", manager.exists()); manager.clearStorage(); try { assertFalse("storage should not exist after clearing", manager.exists()); } catch (Exception e) { // Retry to accommodate backends (e.g. BerkeleyDB) which may require a clean manager after clearing storage manager.close(); manager = openStorageManager(); assertFalse("storage should not exist after clearing", manager.exists()); } }
public void testDataSequential() throws Exception { loadData(200000,2); close(); KeyColumnValueStoreManager manager = openStorageManager(); KeyColumnValueStore store = manager.openDatabase(Backend.EDGESTORE_NAME); SliceQuery query = new SliceQuery(BufferUtil.zeroBuffer(8),BufferUtil.oneBuffer(8)); query.setLimit(2); Stopwatch watch = Stopwatch.createStarted(); StoreTransaction txh = manager.beginTransaction(StandardBaseTransactionConfig.of(TimestampProviders.MILLI)); KeyIterator iterator = store.getKeys(query,txh); int numV = 0; while(iterator.hasNext()) { iterator.next(); RecordIterator<Entry> entries = iterator.getEntries(); assertEquals(2, Iterators.size(entries)); numV++; } iterator.close(); txh.commit(); System.out.println("Time taken: " + watch.elapsed(TimeUnit.MILLISECONDS)); System.out.println("Num Vertices: " + numV); store.close(); manager.close(); }
public static KCVSConfiguration getStandaloneGlobalConfiguration(final KeyColumnValueStoreManager manager, final Configuration config) { try { final StoreFeatures features = manager.getFeatures(); return getGlobalConfiguration(new BackendOperation.TransactionalProvider() { @Override public StoreTransaction openTx() throws BackendException { return manager.beginTransaction(StandardBaseTransactionConfig.of(config.get(TIMESTAMP_PROVIDER),features.getKeyConsistentTxConfig())); } @Override public void close() throws BackendException { manager.close(); } },manager.openDatabase(SYSTEM_PROPERTIES_STORE_NAME),config); } catch (BackendException e) { throw new JanusGraphException("Could not open global configuration",e); } }
/** * Opens an ordered database by the given name. If the database does not exist, it is * created. If it has already been opened, the existing handle is returned. * * @param name Name of database * @return Database Handle * @throws org.janusgraph.diskstorage.BackendException * */ default KeyColumnValueStore openDatabase(String name) throws BackendException { return openDatabase(name, StoreMetaData.EMPTY); }
public StoreTransaction newTransaction(KeyColumnValueStoreManager manager) throws BackendException { StoreTransaction transaction = manager.beginTransaction(getTxConfig()); if (!manager.getFeatures().hasLocking() && manager.getFeatures().isKeyConsistent()) { transaction = new ExpectedValueCheckingTransaction(transaction, manager.beginTransaction(getConsistentTxConfig(manager)), GraphDatabaseConfiguration.STORAGE_READ_WAITTIME.getDefaultValue()); } return transaction; }
public void open() throws BackendException { manager = openStorageManager(); tx = new CacheTransaction(manager.beginTransaction(getTxConfig()), manager, bufferSize, Duration.ofMillis(100), true); store1 = new NoKCVSCache(manager.openDatabase(storeName1)); store2 = new NoKCVSCache(manager.openDatabase(storeName2)); }
@Override public void mutateMany(Map<String, Map<StaticBuffer, KCVMutation>> mutations, StoreTransaction txh) throws BackendException { if (!manager.getFeatures().hasStoreTTL()) { assert manager.getFeatures().hasCellTTL(); for (Map.Entry<String,Map<StaticBuffer, KCVMutation>> sentry : mutations.entrySet()) { Integer ttl = ttlEnabledStores.get(sentry.getKey()); if (null != ttl && 0 < ttl) { for (KCVMutation mut : sentry.getValue().values()) { if (mut.hasAdditions()) applyTTL(mut.getAdditions(), ttl); } } } } manager.mutateMany(mutations,txh); }
@Override public Boolean call() throws Exception { manager.mutateMany(subMutations, tx); return true; }
@Test public void mutateManyWritesSameKeyOnMultipleCFs() throws BackendException { final long arbitraryLong = 42; //must be greater than 0 final StaticBuffer key = KeyColumnValueStoreUtil.longToByteBuffer(arbitraryLong * arbitraryLong); final StaticBuffer val = KeyColumnValueStoreUtil.longToByteBuffer(arbitraryLong * arbitraryLong * arbitraryLong); final StaticBuffer col = KeyColumnValueStoreUtil.longToByteBuffer(arbitraryLong); final StaticBuffer nextCol = KeyColumnValueStoreUtil.longToByteBuffer(arbitraryLong + 1); final StoreTransaction directTx = manager.beginTransaction(getTxConfig()); KCVMutation km = new KCVMutation( Lists.newArrayList(StaticArrayEntry.of(col, val)), Lists.newArrayList()); Map<StaticBuffer, KCVMutation> keyColumnAndValue = ImmutableMap.of(key, km); Map<String, Map<StaticBuffer, KCVMutation>> mutations = ImmutableMap.of( storeName1, keyColumnAndValue, storeName2, keyColumnAndValue); manager.mutateMany(mutations, directTx); directTx.commit(); KeySliceQuery query = new KeySliceQuery(key, col, nextCol); List<Entry> expected = ImmutableList.of(StaticArrayEntry.of(col, val)); Assert.assertEquals(expected, store1.getSlice(query, tx)); Assert.assertEquals(expected, store2.getSlice(query, tx)); }
/** * Clears the storage of all registered backend data providers. This includes backend storage engines and index providers. * <p> * IMPORTANT: Clearing storage means that ALL data will be lost and cannot be recovered. * * @throws BackendException */ public synchronized void clearStorage() throws BackendException { if (!hasAttemptedClose) { hasAttemptedClose = true; managementLogManager.close(); txLogManager.close(); userLogManager.close(); scanner.close(); edgeStore.close(); indexStore.close(); idAuthority.close(); systemConfig.close(); userConfig.close(); storeManager.clearStorage(); storeManager.close(); //Indexes for (IndexProvider index : indexes.values()) { index.clearStorage(); index.close(); } } else { log.debug("Backend {} has already been closed or cleared", this); } }
if (config.has(LOG_STORE_TTL)) { indexStoreTTL = ConversionHelper.getTTLSeconds(config.get(LOG_STORE_TTL)); StoreFeatures storeFeatures = storeManager.getFeatures(); if (storeFeatures.hasCellTTL() && !storeFeatures.hasStoreTTL()) { if (storeManager.getFeatures().hasLocalKeyPartition()) { storeManager.getLocalKeyPartition()); for (PartitionIDRange idRange : partitionRanges) { for (int p : idRange.getAllContainedIDs()) localPartitions.add(p);
final StoreFeatures storeFeatures = storeManager.getFeatures(); KCVSConfiguration keyColumnValueStoreConfiguration=Backend.getStandaloneGlobalConfiguration(storeManager,localBasicConfiguration); final ReadConfiguration globalConfig; overwrite.set(LOCK_LOCAL_MEDIATOR_GROUP, storeManager.getName()); StoreFeatures f = storeManager.getFeatures(); final TimestampProviders backendPreference; if (f.hasTimestamps() && null != (backendPreference = f.getPreferredTimestamps())) {
@Override public boolean exists() throws BackendException { return manager.exists(); }
@Override public List<KeyRange> getLocalKeyPartition() throws BackendException { return backend.getLocalKeyPartition(); } }
@Override public String getName() { return manager.getName(); }