Wouldn't it be easier to set a Cassandra TTL on the aggregates? That would allow them to automatically expire, rather than rely on finding an expired aggregate and then deleting it. If this is the only place where expired aggregates are being deleted, doesn't that mean that you could potentially have a large list of them that will never be deleted and will always stick around in Cassandra, as we might never again see their aggregateKey?