GAE NDB 恢复失败 "Unexpected error contacting datastore"

GAE NDB restore fails with "Unexpected error contacting datastore"

我习惯于定期备份和恢复 NDB 数据存储,经常恢复到不同的 'project',我将在其中测试应用程序的新版本。到目前为止,它运行良好。

现在,Ndb 恢复操作以系统方式失败,日志中的跟踪:

Traceback (most recent call last):
  File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/_internal/mapreduce/handlers.py", line 526, in handle
    ctx.flush()
  File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/_internal/mapreduce/context.py", line 455, in flush
    pool.flush()
  File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/ext/datastore_admin/utils.py", line 695, in flush
    datastore._GetConnection()._reserve_keys(self.keys)
  File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/datastore/datastore_rpc.py", line 2170, in _reserve_keys
    self._async_reserve_keys(None, keys).get_result()
  File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/datastore/datastore_rpc.py", line 921, in get_result
    results = self.__rpcs[0].get_result()
  File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/apiproxy_stub_map.py", line 613, in get_result
    return self.__get_result_hook(self)
  File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/datastore/datastore_rpc.py", line 2211, in __reserve_keys_hook
    self.check_rpc_success(rpc)
  File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/datastore/datastore_rpc.py", line 1371, in check_rpc_success
    raise _ToDatastoreError(err)
InternalError: Unexpected error contacting datastore (2016-11-19T18:01:37+00:00).

有线索吗?我可能遗漏了什么,但我发誓与上周恢复正常的情况相比没有任何变化。

以防万一我的最新备份出现问题,我尝试恢复旧备份,该备份已经成功恢复了几次。还原时出现相同的内部错误。包含在一个全新的 GAE 项目中。

现在已经尝试了很多(许多)次,我发现 'unexpected errors' 总是发生在相同的实体上。整个 backup/restore 涉及大约 30 种不同的类型,其中 5 种因上述错误而失败。其中,有些情况下有实体恢复,但不是全部,有些情况下没有实体恢复。就像某些特定实体可能对异常负责。但是,这同样适用于过去有效的旧备份。

与 Ndb 备份和恢复相关的问题很少(答案仍然很少)。 Ndb 应用程序不使用备份吗?

所以关于这个的最后一句话并没有隐藏在一长串评论的底部,我会post一个答案。

这似乎是一个 days/weeks 前出现过的错误,像我这样的一些用户在恢复到另一个项目时遇到过。

Google 项目组做得很好,及时解决了问题。非常感谢@Ed Davisson。