The current implementation of Mesh Config using the flash manager lack a memory listener which can cause it to never retry a store or delete operation.
Assume the following.
1. A user of flash manager fills up the action queue in flash manager.
2. Directly after that a mesh config entry is changed and need to be stored.
During 2 above, mesh_config_backend_store() return NRF_ERROR_NO_MEM due to the action queue in flash manager is full.
The Mesh Config system never retries the store and thus NRF_MESH_EVT_CONFIG_STABLE is never emitted.
The current re-try mechanism for Mesh Config assumes that at least one entry was successfully queued in flash manager.
A better solution would be to make use of the already existing API in flash manager flash_manager_mem_listener_register() to get a callback when there is space in the action queue again.
This is found in SDK For Mesh v4.0.0.
Thanks.