private void removeAckLocationsForSub(KahaSubscriptionCommand command, Transaction tx, StoredDestination sd, String subscriptionKey) throws IOException { if (!sd.ackPositions.isEmpty(tx)) { SequenceSet sequences = sd.ackPositions.remove(tx, subscriptionKey); if (sequences == null || sequences.isEmpty()) { return; } ArrayList<Long> unreferenced = new ArrayList<>(); for(Long sequenceId : sequences) { if(!isSequenceReferenced(tx, sd, sequenceId)) { unreferenced.add(sequenceId); } } for(Long sequenceId : unreferenced) { // Find all the entries that need to get deleted. ArrayList<Entry<Long, MessageKeys>> deletes = new ArrayList<>(); sd.orderIndex.getDeleteList(tx, deletes, sequenceId); // Do the actual deletes. for (Entry<Long, MessageKeys> entry : deletes) { sd.locationIndex.remove(tx, entry.getValue().location); sd.messageIdIndex.remove(tx, entry.getValue().messageId); sd.orderIndex.remove(tx, entry.getKey()); decrementAndSubSizeToStoreStat(tx, command.getDestination(), entry.getValue().location.getSize()); } } } }
private void removeAckLocationsForSub(KahaSubscriptionCommand command, Transaction tx, StoredDestination sd, String subscriptionKey) throws IOException { if (!sd.ackPositions.isEmpty(tx)) { SequenceSet sequences = sd.ackPositions.remove(tx, subscriptionKey); if (sequences == null || sequences.isEmpty()) { return; } ArrayList<Long> unreferenced = new ArrayList<>(); for(Long sequenceId : sequences) { if(!isSequenceReferenced(tx, sd, sequenceId)) { unreferenced.add(sequenceId); } } for(Long sequenceId : unreferenced) { // Find all the entries that need to get deleted. ArrayList<Entry<Long, MessageKeys>> deletes = new ArrayList<>(); sd.orderIndex.getDeleteList(tx, deletes, sequenceId); // Do the actual deletes. for (Entry<Long, MessageKeys> entry : deletes) { sd.locationIndex.remove(tx, entry.getValue().location); sd.messageIdIndex.remove(tx, entry.getValue().messageId); sd.orderIndex.remove(tx, entry.getKey()); decrementAndSubSizeToStoreStat(command.getDestination(), entry.getValue().location.getSize()); } } } }
private void removeAckLocationsForSub(KahaSubscriptionCommand command, Transaction tx, StoredDestination sd, String subscriptionKey) throws IOException { if (!sd.ackPositions.isEmpty(tx)) { SequenceSet sequences = sd.ackPositions.remove(tx, subscriptionKey); if (sequences == null || sequences.isEmpty()) { return; } ArrayList<Long> unreferenced = new ArrayList<>(); for(Long sequenceId : sequences) { if(!isSequenceReferenced(tx, sd, sequenceId)) { unreferenced.add(sequenceId); } } for(Long sequenceId : unreferenced) { // Find all the entries that need to get deleted. ArrayList<Entry<Long, MessageKeys>> deletes = new ArrayList<>(); sd.orderIndex.getDeleteList(tx, deletes, sequenceId); // Do the actual deletes. for (Entry<Long, MessageKeys> entry : deletes) { sd.locationIndex.remove(tx, entry.getValue().location); sd.messageIdIndex.remove(tx, entry.getValue().messageId); sd.orderIndex.remove(tx, entry.getKey()); decrementAndSubSizeToStoreStat(command.getDestination(), entry.getValue().location.getSize()); } } } }
private void removeAckLocationsForSub(KahaSubscriptionCommand command, Transaction tx, StoredDestination sd, String subscriptionKey) throws IOException { if (!sd.ackPositions.isEmpty(tx)) { SequenceSet sequences = sd.ackPositions.remove(tx, subscriptionKey); if (sequences == null || sequences.isEmpty()) { return; } ArrayList<Long> unreferenced = new ArrayList<>(); for(Long sequenceId : sequences) { if(!isSequenceReferenced(tx, sd, sequenceId)) { unreferenced.add(sequenceId); } } for(Long sequenceId : unreferenced) { // Find all the entries that need to get deleted. ArrayList<Entry<Long, MessageKeys>> deletes = new ArrayList<>(); sd.orderIndex.getDeleteList(tx, deletes, sequenceId); // Do the actual deletes. for (Entry<Long, MessageKeys> entry : deletes) { sd.locationIndex.remove(tx, entry.getValue().location); sd.messageIdIndex.remove(tx, entry.getValue().messageId); sd.orderIndex.remove(tx, entry.getKey()); decrementAndSubSizeToStoreStat(command.getDestination(), entry.getValue().location.getSize()); } } } }