@Override public void updateRepository(final Collection<RepositoryRecord> records) throws IOException { for (final RepositoryRecord record : records) { if (record.getType() == RepositoryRecordType.DELETE) { // For any DELETE record that we have, if current claim's claimant count <= 0, mark it as destructable if (record.getCurrentClaim() != null && getClaimantCount(record.getCurrentClaim()) <= 0) { markDestructable(record.getCurrentClaim()); } // If the original claim is different than the current claim and the original claim has a claimant count <= 0, mark it as destructable. if (record.getOriginalClaim() != null && !record.getOriginalClaim().equals(record.getCurrentClaim()) && getClaimantCount(record.getOriginalClaim()) <= 0) { markDestructable(record.getOriginalClaim()); } } else if (record.getType() == RepositoryRecordType.UPDATE) { // if we have an update, and the original is no longer needed, mark original as destructable if (record.getOriginalClaim() != null && record.getCurrentClaim() != record.getOriginalClaim() && getClaimantCount(record.getOriginalClaim()) <= 0) { markDestructable(record.getOriginalClaim()); } } } }
out.write(ACTION_DELETE); out.writeLong(getRecordIdentifier(record)); serializeContentClaim(record.getCurrentClaim(), record.getCurrentClaimOffset(), out); return; out.write(ACTION_DELETE); out.writeLong(getRecordIdentifier(record)); serializeContentClaim(record.getCurrentClaim(), record.getCurrentClaimOffset(), out); return; final ContentClaim claim = record.getCurrentClaim();
return flowFile.getQueueDateIndex(); case FlowFileSchema.CONTENT_CLAIM: final ContentClaimFieldMap contentClaimFieldMap = record.getCurrentClaim() == null ? null : new ContentClaimFieldMap(record.getCurrentClaim(), record.getCurrentClaimOffset(), contentClaimSchema); return contentClaimFieldMap; case RepositoryRecordSchema.QUEUE_IDENTIFIER:
final ContentClaim claim = record.getCurrentClaim(); if (claim != null) { claimManager.incrementClaimantCount(claim.getResourceClaim());
out.write(ACTION_DELETE); out.writeLong(getRecordIdentifier(record)); serializeContentClaim(record.getCurrentClaim(), record.getCurrentClaimOffset(), out); return; out.write(ACTION_DELETE); out.writeLong(getRecordIdentifier(record)); serializeContentClaim(record.getCurrentClaim(), record.getCurrentClaimOffset(), out); return; final ContentClaim claim = record.getCurrentClaim();
if (record.getType() == RepositoryRecordType.DELETE) { if (record.getCurrentClaim() != null && isDestructable(record.getCurrentClaim())) { claimsToAdd.add(record.getCurrentClaim().getResourceClaim()); if (record.getOriginalClaim() != null && !record.getOriginalClaim().equals(record.getCurrentClaim()) && isDestructable(record.getOriginalClaim())) { claimsToAdd.add(record.getOriginalClaim().getResourceClaim()); if (record.getOriginalClaim() != null && record.getCurrentClaim() != record.getOriginalClaim() && isDestructable(record.getOriginalClaim())) { claimsToAdd.add(record.getOriginalClaim().getResourceClaim());
return flowFile.getQueueDateIndex(); case FlowFileSchema.CONTENT_CLAIM: final ContentClaimFieldMap contentClaimFieldMap = record.getCurrentClaim() == null ? null : new ContentClaimFieldMap(record.getCurrentClaim(), record.getCurrentClaimOffset(), contentClaimSchema); return contentClaimFieldMap; case RepositoryRecordSchema.QUEUE_IDENTIFIER:
contentRepo.decrementClaimantCount(expiredRecord.getCurrentClaim());