How to delete L2 cache entry on Cassandra node disk

Not applicable

Hi Team,

I have a question on Cache Policy.

When we have cache entries in Populate Cache Policy defined under some environment cache resource, how can we delete these entries stored as L2 cache on disk of cassandra node?

It seems that;

  • Edge UI 'Delete' cache button only deletes cache resource but cache entries defined with <KeyFragment> for <CacheResource> doesn't seem to be deleted for L2 cache on disk
  • InvalidateCache policy with PurgeChildEntries set to true doesn't delete the L2 cache entries on disk
  • Expiration of Cache doesn't delete the cache entries on disk


Is it expected design of Cache Policy that L2 cache stays on disk unless it's explicitly deleted?

And, is the Management API to delete cache as follows the same behavior as Edge UI above?

curl -X DELETE https://api.enterprise.apigee.com/v1/organizations/{org_name}/environments/{env_name}/caches/{cache_...
Then can we have to delete L2 cache entries on Cassandra with the API?
curl -X DELETE https://api.enterprise.apigee.com/v1/organizations/{org_name}/environments/{env_name}/caches/{cache_...
If it's not the case, how can we delete the cache entries on disk - only by cqlsh DELETE?


Since there are no configurable limit of L2 cache total size, it should be a problem with disk space just increasing to become full.

Actually a customer using L2 Cache with dynamically adding cache entries see the issue of overload of disk and 'nodetool repair' operation fails with large traffics possibly by this too many cache entries.

I would appreciate your advice on the best practice of deleting L2 cache when it becomes no more necessary.

Regards,
Toshi

0 4 1,032
4 REPLIES 4

I'm sorry I don't know if it is the expected design of Cache Policy that L2 cache stays on disk unless it's explicitly deleted. That seems like it would be a poor design choice.

But, you may be able to overwrite the cache, by simply calling PopulateCache with a new value and a TTL of 1 second. This will place a new value in cache, but it should expire quickly.

This may have the effect you desire.

It is still worth exploring the behavior of a DELETE on the cache entry.

@Dino Thank you for the response and the useful suggestion.
In the customer's use case the cache entry name is decided by client dynamically.
So, we need to delete the cache entries on disk by some means or other on it's expiration, etc.

I would appreciate it if you or someone advise how we can do it.

Let me please update on some findings. The cache entries on L2 are deleted rightly for the contents of row records as seen on cqlsh select command. Sorry for my confusion above.

But there still remain the RowKey entries even after the expiration, which we can check with cassandra-cli, list cache_entries command.

The question now is, are there any impacts on disk space by having the data on Cassandra node, if cache_entires are added on run-time continually as mentioned above?
I think that this is not replicated between cassandra node. Is it correct?

@Toshihiro Shibamoto

Have you got any work around on this issue ?

I can see expired cache in cassandra database with null value, But it should be deleted from cassandra.

https://community.apigee.com/questions/56803/urgent-cassandra-cache-l2-cache-value-null-and-exp.html


Thanks,

Sartaj Sisodiya