/** * Gets the ID of the Column Family. * * @return the ID of the Column Family. */ public int getID() { return getID(nativeHandle_); }
@Override public int hashCode() { try { return Objects.hash(getName(), getID(), rocksDB_.nativeHandle_); } catch (RocksDBException e) { throw new RuntimeException("Cannot calculate hash code of column family handle", e); } }
@Override public boolean equals(final Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } final ColumnFamilyHandle that = (ColumnFamilyHandle) o; try { return rocksDB_.nativeHandle_ == that.rocksDB_.nativeHandle_ && getID() == that.getID() && Arrays.equals(getName(), that.getName()); } catch (RocksDBException e) { throw new RuntimeException("Cannot compare column family handles", e); } }
private ByteStore newStore(String name) throws RocksDBException { if (inMemory) { return new MapStore(name); } else { final ColumnFamilyDescriptor columnFamilyDescriptor = new ColumnFamilyDescriptor(name.getBytes(UTF_8)); ColumnFamilyHandle handle = db.createColumnFamily(columnFamilyDescriptor); handleIdToNameMap.put(handle.getID(), name); metadataManager.createEntry(name, false); return new RocksDBStore(name, columnFamilyDescriptor, handle, db, stripeCount); } }
String name = new String(family, UTF_8); final ColumnFamilyHandle handle = familyHandles.get(i); handleIdToNameMap.put(handle.getID(), name); RocksDBStore store = new RocksDBStore(name, new ColumnFamilyDescriptor(family), handle, db, stripeCount); maps.put(name, store);
void replaySince(final long transactionNumber, ReplayHandler replayHandler) { try (ReplayHandlerAdapter handler = new ReplayHandlerAdapter(db.getDefaultColumnFamily().getID(), replayHandler, handleIdToNameMap); TransactionLogIterator iterator = db.getUpdatesSince(transactionNumber)) { while (iterator.isValid()) { iterator.status(); final TransactionLogIterator.BatchResult result = iterator.getBatch(); // requires isValid and status check LOGGER.debug("Requested sequence number: {}, iterator sequence number: {}", transactionNumber, result.sequenceNumber()); result.writeBatch() .iterate(handler); if (!iterator.isValid()) { break; } iterator.next(); // requires isValid } for (String updatedStore : handler.getUpdatedStores()) { final long latestTransactionNumber = metadataManager.getLatestTransactionNumber(); metadataManager.setLatestTransactionNumber(updatedStore, latestTransactionNumber, latestTransactionNumber); } } catch (RocksDBException e) { throw new DatastoreException(e); } }