docs: public boolean acquireProcessLock() throws MongobeeConnectionException, MongobeeLockException {
      verifyDbConnection();
      boolean acquired = lockDao.acquireLock(getMongoDatabase());
  
      if (!acquired && waitForLock) {
        long timeToGiveUp = new Date().getTime() + (changeLogLockWaitTime * 1000 * 60);
        while (!acquired && new Date().getTime() < timeToGiveUp) {
          acquired = lockDao.acquireLock(getMongoDatabase());
          if (!acquired) {
            logger.info("Waiting for changelog lock....");
            try {
              Thread.sleep(changeLogLockPollRate * 1000);
            } catch (InterruptedException e) {
              // nothing
            }
          }
        }
      }
  
      if (!acquired && throwExceptionIfCannotObtainLock) {
        logger.info("Mongobee did not acquire process lock. Throwing exception.");
        throw new MongobeeLockException("Could not acquire process lock");
      }
  
      return acquired;
    }