I am using a CDS database, sometimes I get an error on a put call - ENOENT i.e, No such file or directory
This is not one of the documented return codes for a put.
Under what scenarios can we get these errors ? The file ofcourse is still there.
Any help will be appreciated.
Are you sure that the error ENOENT came from DB->put()? As far as I know, all error codes which returned from DB->put() doesn't contain ENOENT.
I wrote a small program which use CDS database. It calls DB->put() 100000 times to put data into CDS database. But I could not reproduce the issue you mentioned.
If you could post your detailed test program that represents a reproducible test case, it will be more easier to find the problem.
It is CDS so there are no log files. Under normal circumstances expect no I/O as all puts go to the MMap Cache & get deleted before they all fushed out. The only rare exception is if the messages get flushed to db file.