res_sorcery_memory_cache: Disallow per-object expire with full backend.

The AMI action and CLI command did not take into account the properties
of full backend caching. This resulted in an expired object remaining
removed until a full backend update occurred, instead of having the
object updated when needed.

This change makes it so that the AMI action and CLI command for object
expire will now fail instead of putting the cache into an undesired
state. If full backend caching is enabled then only operations
which act on the entire cache are available.

ASTERISK-28942

Change-Id: Id662d888f177ab566c8e802ad583083b742d21f4
This commit is contained in:
Joshua C. Colp
2020-06-10 06:35:50 -03:00
committed by Friendly Automation
parent 1274117102
commit a143c3a7b7
2 changed files with 33 additions and 4 deletions

View File

@@ -0,0 +1,19 @@
Subject: res_sorcery_memory_cache
The SorceryMemoryCacheExpireObject AMI action and CLI
command allow expiring of a specific object within the
sorcery memory cache. This is done by removing the
object from the cache with the expectation that the
cache will then re-populate the object when it is next
needed.
For full backend caching this does not occur. The cache
won't repopulate until an entire refresh is done resulting
in the possibility that objects are missing until that
time.
The AMI action and CLI command will now not allow
expiring of an object if the cache is configured as a
full backend cache. Instead you must use either the
SorceryMemoryCacheExpire or SorceryMemoryCachePopulate
AMI actions or their associated CLI commands.