@Override
      public void beforeGoingToCompact() {
        for (int k = 0; k < TOTAL_KEYS; ++k) {
          final int num = k;
          Thread th = new Thread(() -> {

            byte[] val_on_disk = null;
            try {
              val_on_disk = (byte[]) ((LocalRegion) region).getValueOnDisk("key" + (num + 1));
              assertTrue(
                  "byte  array was not of right size  as its size was " + val_on_disk.length,
                  val_on_disk.length == 100);

            } catch (Exception e) {
              encounteredFailure = true;
              logWriter.error("Test encountered exception ", e);
              throw new AssertionError(
                  " Test failed as could not obtain value from disk.Exception = ", e);
            }

          });
          threads.add(th);
        }
        for (int j = 0; j < TOTAL_KEYS; ++j) {
          ((Thread) threads.get(rollingCount++)).start();
        }

      }
Check if the roller thread cant skip rolling the entry & if a get is done on that entry , it is
possible for the get operation to get the Oplog which is not yet destroyed but by the time a
basicGet is done,the oplog gets destroyed & the get operation sees the file length zero or it
may encounter null pointer exception while retrieving the oplog.
geode-core/src/integrationTest/java/org/apache/geode/internal/cache/ConcurrentRollingAndRegionOperationsJUnitTest.java