Am using the DbMpoolFile Library for a general purpose cache, but when the cache gets full, dirty pages are not evicted from the cache though i call the DbMpoolFile->put method after every DbMpoolFile->get. The applications throws the following error ,
BDB3017 unable to allocate space from the buffer cache
unable to create page 7696: Operation not permitted
Am quiet new to the BDB library though. i have gone through the docs several times but can't seem to know what am doing wrong. I want the system to evict dirty pages to the backing file and make room for new pages . Do I have to explicitly call the DbEnv::memp_trickle() function ? if yes, where and when, bcos i tried calling it immediately after opening my environment but its still didnt work.
I expected the DbMpool libarary to handle the pagin and out automatically. Do i have to set any flags ?
Any help and pointers will be very much appreciated. i've been stuck with this for weeks...