We experienced some stale Datastore data in our Python Google AppEngine application. I inspected the log and saw the following warning in the requests that were supposed to update the respective data:
Memcache set_multi() error: [':part', ':full']
The log entry was produced after an ndb.put(). There were no exceptions raised, only this silent log output. However, the model was not written to the Datastore. This happened repeatedly for 4 times.
To be accurate, I am not 100% sure if the log was produced during the put() of my model or afterwards, while GAE is saving appstats for that particular request. In addition, this log says that our memcache is full, I don't clearly get it as a problem (caches are expected to get full from time to time, right?).
Yet, in all cases that this log was produced, the put() did not write data to the Datastore and I cannot identify why this happened. If the ndb.put() failed, I would expect some kind or error/exception raised (my code handles these), but the warning was silent.
Any suggestions?
The return value is a list of keys whose values were NOT set. On total success, this list should be empty.Ok, so could be the values for those keys are not pickle-able? Also, NDB uses atomic transactions, which could include needing the write to memcache to work so the whole saving action can work. - belteshazzar