@Test
  public void concurrentBatchDeleteAndPutTest() throws Exception {
    List<MockId> ids = new ArrayList<>(Arrays.asList(getUniqueId(), getUniqueId()));

    ExecutorService executorService = Executors.newFixedThreadPool(2);
    try {
      Future<StoreBatchDeleteInfo> batchDeleteFuture = executorService.submit(() -> {
        List<MessageInfo> infoList = new ArrayList<>();
        for (MockId id : ids) {
          MessageInfo info =
              new MessageInfo(id, DELETE_RECORD_SIZE, id.getAccountId(), id.getContainerId(), time.milliseconds(),
                  MessageInfo.LIFE_VERSION_FROM_FRONTEND);
          infoList.add(info);
        }
        return store.batchDelete(infoList);
      });

      StoreBatchDeleteInfo storeBatchDeleteInfo = batchDeleteFuture.get();
      for (MessageErrorInfo messageErrorInfo: storeBatchDeleteInfo.getMessageErrorInfos()){
        assertEquals(StoreErrorCodes.IDNotFound, messageErrorInfo.getError());
      }

    } finally {
      executorService.shutdownNow();
    }
  }
Test the case where a Put happens while a Batch_Delete is doing the preliminary check.
Since the batch delete happens before put, delete should return a ID_NOT_FOUND error.
@throws Exception
ambry-store/src/test/java/com/github/ambry/store/BlobStoreTest.java