test_class.declarator: LOG = LoggerFactory.getLogger(BlobIdTrackerTest.class)
test_class.modifier: private static final
test_class.original_string: private static final Logger LOG = LoggerFactory.getLogger(BlobIdTrackerTest.class);
test_class.type: Logger
test_class.var_name: LOG
test_class.declarator: root
test_class.original_string: File root;
test_class.type: File
test_class.var_name: root
test_class.declarator: dataStore
test_class.original_string: SharedDataStore dataStore;
test_class.type: SharedDataStore
test_class.var_name: dataStore
test_class.declarator: tracker
test_class.original_string: BlobIdTracker tracker;
test_class.type: BlobIdTracker
test_class.var_name: tracker
test_class.declarator: closer = Closer.create()
test_class.original_string: Closer closer = Closer.create();
test_class.type: Closer
test_class.var_name: closer
test_class.declarator: folder = new TemporaryFolder(new File("target"))
test_class.modifier: @Rule
      public
test_class.original_string: @Rule
      public TemporaryFolder folder = new TemporaryFolder(new File("target"));
test_class.type: TemporaryFolder
test_class.var_name: folder
test_class.declarator: repoId
test_class.modifier: private
test_class.original_string: private String repoId;
test_class.type: String
test_class.var_name: repoId
test_class.declarator: scheduler
test_class.modifier: private
test_class.original_string: private ScheduledExecutorService scheduler;
test_class.type: ScheduledExecutorService
test_class.var_name: scheduler
test_class.file: oak-blob-plugins/src/test/java/org/apache/jackrabbit/oak/plugins/blob/datastore/BlobIdTrackerTest.java
test_class.identifier: BlobIdTrackerTest
test_case.body: @Test
      public void snapshotExecuteAfterRemove() throws Exception {
          LOG.info("In snapshotExecuteAfterRemove");
  
          Clock clock = Clock.ACCURATE;
          BlobIdTracker.SnapshotJob job = tracker.new SnapshotJob(100, clock);
  
          // Mimics a call to get after add and before remove similar to the calls in GC
          Set<String> present = snapshotRemove(job, false);
  
          clock.waitUntil(System.currentTimeMillis() + 100);
  
          // Since already retrieved the datastore should not be empty unless the snapshot is ignored
          ScheduledFuture<?> scheduledFuture =
              scheduler.schedule(job, 0, TimeUnit.MILLISECONDS);
          scheduledFuture.get();
  
          assertEquals("Elements not equal after snapshot after remove", present,
              read(dataStore.getAllMetadataRecords(BLOBREFERENCES.getType())));
      }
test_case.class_method_signature: BlobIdTrackerTest.snapshotExecuteAfterRemove()
test_case.full_signature: @Test public void snapshotExecuteAfterRemove()
test_case.identifier: snapshotExecuteAfterRemove
test_case.invocations: info snapshotRemove waitUntil currentTimeMillis schedule get assertEquals read getAllMetadataRecords getType
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void snapshotExecuteAfterRemove()
focal_class.declarator: LOG = LoggerFactory.getLogger(BlobIdTracker.class)
focal_class.modifier: private static final
focal_class.original_string: private static final Logger LOG = LoggerFactory.getLogger(BlobIdTracker.class);
focal_class.type: Logger
focal_class.var_name: LOG
focal_class.declarator: datastoreMeta = "blobids"
focal_class.modifier: private static final
focal_class.original_string: private static final String datastoreMeta = "blobids";
focal_class.type: String
focal_class.var_name: datastoreMeta
focal_class.declarator: fileNamePrefix = "blob"
focal_class.modifier: private static final
focal_class.original_string: private static final String fileNamePrefix = "blob";
focal_class.type: String
focal_class.var_name: fileNamePrefix
focal_class.declarator: mergedFileSuffix = ".refs"
focal_class.modifier: private static final
focal_class.original_string: private static final String mergedFileSuffix = ".refs";
focal_class.type: String
focal_class.var_name: mergedFileSuffix
focal_class.declarator: snapshotMarkerSuffix = ".snapshot"
focal_class.modifier: private static final
focal_class.original_string: private static final String snapshotMarkerSuffix = ".snapshot";
focal_class.type: String
focal_class.var_name: snapshotMarkerSuffix
focal_class.declarator: instanceId = randomUUID().toString()
focal_class.modifier: private
focal_class.original_string: private String instanceId = randomUUID().toString();
focal_class.type: String
focal_class.var_name: instanceId
focal_class.declarator: datastore
focal_class.modifier: private
focal_class.original_string: private SharedDataStore datastore;
focal_class.type: SharedDataStore
focal_class.var_name: datastore
focal_class.declarator: snapshotInterval
focal_class.modifier: private
focal_class.original_string: private long snapshotInterval;
focal_class.type: long
focal_class.var_name: snapshotInterval
focal_class.declarator: deleteTracker
focal_class.modifier: private
focal_class.original_string: private ActiveDeletionTracker deleteTracker;
focal_class.type: ActiveDeletionTracker
focal_class.var_name: deleteTracker
focal_class.declarator: store
focal_class.modifier: protected
focal_class.original_string: protected BlobIdStore store;
focal_class.type: BlobIdStore
focal_class.var_name: store
focal_class.declarator: scheduler
focal_class.modifier: private
focal_class.original_string: private ScheduledExecutorService scheduler;
focal_class.type: ScheduledExecutorService
focal_class.var_name: scheduler
focal_class.declarator: prefix
focal_class.modifier: private
focal_class.original_string: private String prefix;
focal_class.type: String
focal_class.var_name: prefix
focal_class.declarator: rootDir
focal_class.modifier: private
focal_class.original_string: private File rootDir;
focal_class.type: File
focal_class.var_name: rootDir
focal_class.file: oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/BlobIdTracker.java
focal_class.identifier: BlobIdTracker
focal_class.interfaces: implements Closeable, BlobTracker
focal_class.class_method_signature: BlobIdTracker.BlobIdTracker()
focal_class.full_signature: private  BlobIdTracker()
focal_class.identifier: BlobIdTracker
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.signature:  BlobIdTracker()
focal_class.class_method_signature: BlobIdTracker.BlobIdTracker(String path, String repositoryId, long snapshotIntervalSecs, SharedDataStore datastore)
focal_class.full_signature: private  BlobIdTracker(String path, String repositoryId, long snapshotIntervalSecs, SharedDataStore datastore)
focal_class.identifier: BlobIdTracker
focal_class.modifiers: private
focal_class.parameters: (String path, String repositoryId, long snapshotIntervalSecs, SharedDataStore datastore)
focal_class.signature:  BlobIdTracker(String path, String repositoryId, long snapshotIntervalSecs, SharedDataStore datastore)
focal_class.class_method_signature: BlobIdTracker.BlobIdTracker(String path, String repositoryId, ScheduledExecutorService scheduler, long snapshotDelaySecs,
          long snapshotIntervalSecs, SharedDataStore datastore)
focal_class.full_signature: private  BlobIdTracker(String path, String repositoryId, ScheduledExecutorService scheduler, long snapshotDelaySecs,
          long snapshotIntervalSecs, SharedDataStore datastore)
focal_class.identifier: BlobIdTracker
focal_class.modifiers: private
focal_class.parameters: (String path, String repositoryId, ScheduledExecutorService scheduler, long snapshotDelaySecs,
          long snapshotIntervalSecs, SharedDataStore datastore)
focal_class.signature:  BlobIdTracker(String path, String repositoryId, ScheduledExecutorService scheduler, long snapshotDelaySecs,
          long snapshotIntervalSecs, SharedDataStore datastore)
focal_class.class_method_signature: BlobIdTracker.build(String path, String repositoryId, long snapshotIntervalSecs, SharedDataStore datastore)
focal_class.full_signature: public static BlobIdTracker build(String path, String repositoryId, long snapshotIntervalSecs, SharedDataStore datastore)
focal_class.identifier: build
focal_class.modifiers: public static
focal_class.parameters: (String path, String repositoryId, long snapshotIntervalSecs, SharedDataStore datastore)
focal_class.return: BlobIdTracker
focal_class.signature: BlobIdTracker build(String path, String repositoryId, long snapshotIntervalSecs, SharedDataStore datastore)
focal_class.class_method_signature: BlobIdTracker.getDeleteTracker()
focal_class.full_signature: public ActiveDeletionTracker getDeleteTracker()
focal_class.identifier: getDeleteTracker
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: ActiveDeletionTracker
focal_class.signature: ActiveDeletionTracker getDeleteTracker()
focal_class.class_method_signature: BlobIdTracker.remove(File recs, Options options)
focal_class.full_signature: @Override public void remove(File recs, Options options)
focal_class.identifier: remove
focal_class.modifiers: @Override public
focal_class.parameters: (File recs, Options options)
focal_class.return: void
focal_class.signature: void remove(File recs, Options options)
focal_class.class_method_signature: BlobIdTracker.remove(File recs)
focal_class.full_signature: @Override public void remove(File recs)
focal_class.identifier: remove
focal_class.modifiers: @Override public
focal_class.parameters: (File recs)
focal_class.return: void
focal_class.signature: void remove(File recs)
focal_class.class_method_signature: BlobIdTracker.remove(Iterator<String> recs)
focal_class.full_signature: @Override public void remove(Iterator<String> recs)
focal_class.identifier: remove
focal_class.modifiers: @Override public
focal_class.parameters: (Iterator<String> recs)
focal_class.return: void
focal_class.signature: void remove(Iterator<String> recs)
focal_class.class_method_signature: BlobIdTracker.add(String id)
focal_class.full_signature: @Override public void add(String id)
focal_class.identifier: add
focal_class.modifiers: @Override public
focal_class.parameters: (String id)
focal_class.return: void
focal_class.signature: void add(String id)
focal_class.class_method_signature: BlobIdTracker.add(Iterator<String> recs)
focal_class.full_signature: @Override public void add(Iterator<String> recs)
focal_class.identifier: add
focal_class.modifiers: @Override public
focal_class.parameters: (Iterator<String> recs)
focal_class.return: void
focal_class.signature: void add(Iterator<String> recs)
focal_class.class_method_signature: BlobIdTracker.add(File recs)
focal_class.full_signature: @Override public void add(File recs)
focal_class.identifier: add
focal_class.modifiers: @Override public
focal_class.parameters: (File recs)
focal_class.return: void
focal_class.signature: void add(File recs)
focal_class.class_method_signature: BlobIdTracker.get()
focal_class.full_signature: @Override public Iterator<String> get()
focal_class.identifier: get
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: Iterator<String>
focal_class.signature: Iterator<String> get()
focal_class.class_method_signature: BlobIdTracker.get(String path)
focal_class.full_signature: @Override public File get(String path)
focal_class.identifier: get
focal_class.modifiers: @Override public
focal_class.parameters: (String path)
focal_class.return: File
focal_class.signature: File get(String path)
focal_class.class_method_signature: BlobIdTracker.globalMerge()
focal_class.full_signature: private void globalMerge()
focal_class.identifier: globalMerge
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void globalMerge()
focal_class.class_method_signature: BlobIdTracker.snapshot()
focal_class.full_signature: private void snapshot()
focal_class.identifier: snapshot
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void snapshot()
focal_class.class_method_signature: BlobIdTracker.snapshot(boolean skipStoreSnapshot)
focal_class.full_signature: private void snapshot(boolean skipStoreSnapshot)
focal_class.identifier: snapshot
focal_class.modifiers: private
focal_class.parameters: (boolean skipStoreSnapshot)
focal_class.return: void
focal_class.signature: void snapshot(boolean skipStoreSnapshot)
focal_class.class_method_signature: BlobIdTracker.getSnapshotMarkerFile()
focal_class.full_signature: private File getSnapshotMarkerFile()
focal_class.identifier: getSnapshotMarkerFile
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: File
focal_class.signature: File getSnapshotMarkerFile()
focal_class.class_method_signature: BlobIdTracker.close()
focal_class.full_signature: @Override public void close()
focal_class.identifier: close
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void close()
focal_method.body: @Override public Iterator<String> get() throws IOException {
          try {
              globalMerge();
              return store.getRecords();
          } catch (IOException e) {
              LOG.error("Error in retrieving blob records iterator", e);
              throw e;
          }
      }
focal_method.class_method_signature: BlobIdTracker.get()
focal_method.full_signature: @Override public Iterator<String> get()
focal_method.identifier: get
focal_method.invocations: globalMerge getRecords error
focal_method.modifiers: @Override public
focal_method.parameters: ()
focal_method.return: Iterator<String>
focal_method.signature: Iterator<String> get()