RefDataOffHeapStore extends AbstractRefDataStore implements RefDataStore, HasSystemInfo { void doWithRefStreamDefinitionLock(final RefStreamDefinition refStreamDefinition, final Runnable work) { doWithRefStreamDefinitionLock(refStreamDefStripedReentrantLock, refStreamDefinition, work); } @Inject  RefDataOffHeapStore(
            final TempDirProvider tempDirProvider,
            final PathCreator pathCreator,
            final ReferenceDataConfig referenceDataConfig,
            final ByteBufferPool byteBufferPool,
            final Factory keyValueStoreDbFactory,
            final ValueStoreDb.Factory valueStoreDbFactory,
            final ValueStoreMetaDb.Factory valueStoreMetaDbFactory,
            final RangeStoreDb.Factory rangeStoreDbFactory,
            final MapUidForwardDb.Factory mapUidForwardDbFactory,
            final MapUidReverseDb.Factory mapUidReverseDbFactory,
            final RefDataValueConverter refDataValueConverter,
            final ProcessingInfoDb.Factory processingInfoDbFactory); @Override StorageType getStorageType(); @Override Optional<RefDataProcessingInfo> getAndTouchProcessingInfo(final RefStreamDefinition refStreamDefinition); @Override boolean isDataLoaded(final RefStreamDefinition refStreamDefinition); @Override boolean exists(final MapDefinition mapDefinition); @Override Optional<RefDataValue> getValue(final MapDefinition mapDefinition,
                                           final String key); @Override boolean consumeValueBytes(final MapDefinition mapDefinition,
                                     final String key,
                                     final Consumer<TypedByteBuffer> valueBytesConsumer); @Override void purgeOldData(); @Override long getKeyValueEntryCount(); @Override long getKeyRangeValueEntryCount(); @Override long getProcessingInfoEntryCount(); @Override void logAllContents(); @Override void logAllContents(Consumer<String> logEntryConsumer); @Override List<RefStoreEntry> list(final int limit); List<RefStoreEntry> list(final int limit,
                                    final Predicate<RefStoreEntry> filter); @Override SystemInfoResult getSystemInfo();  }
@Test void testDoWithRefStreamDefinitionLock() { final RefStreamDefinition refStreamDefinition = buildUniqueRefStreamDefinition(); ((RefDataOffHeapStore) refDataStore).doWithRefStreamDefinitionLock(refStreamDefinition, () -> { LOGGER.debug("Got lock"); ((RefDataOffHeapStore) refDataStore).doWithRefStreamDefinitionLock(refStreamDefinition, () -> { LOGGER.debug("Got inner lock"); }); }); }