/** * Deletes documents from the activity engine * * @param uids */ public void delete(long... uids) { boolean needToFlush = false; if (uids.length == 0) { return; } for (long uid : uids) { if (uid == Long.MIN_VALUE) { continue; } Lock writeLock = globalLock.writeLock(); try { writeLock.lock(); if (!uidToArrayIndex.containsKey(uid)) { continue; } deletedDocumentsCounter.inc(); int index = uidToArrayIndex.remove(uid); for (ActivityValues activityIntValues : valuesMap.values()) { activityIntValues.delete(index); } needToFlush = needToFlush | pendingDeletes.addFieldUpdate(new Update(index, Long.MIN_VALUE)); } finally { writeLock.unlock(); } } if (needToFlush) { flush(); } }