We have a process that will spin through the objects in one of our buckets and just make sure that they are still current and not out of sync with the back end store. We have had this process for 2-3 years, first on 1.8 and more recently on 2.5 (enterprise).
When we moved from 1.8 to 2.5, we had to upgrade the .NET client version to go with it. Since then we have seen some odd behaviors - things falling out of Couchbase that didn’t used to do so. I have a hypothesis/question to pose about this:
Our process spins through and does a TryGet() operation on all the keys. If it finds a key, it moves on and does nothing.
Is it possible that, in the older server/client, doing a TryGet (or a Get) would cause the expiration to reset, but in the newer version (the one that seems to have introduced the Touch method), TryGet/Get do not? That to get the expiration to reset on an object, you now have to explicitly call the Touch method with that key?
It would explain our changed behavior, but I don’t have an older environment in which to test this any longer.