已删除的实体使用数据存储管理员继续返回

时间:2013-03-08 22:28:29

标签: google-app-engine google-cloud-datastore datastore-admin

我正在尝试将数据存储从一个应用程序复制到另一个应用程序(直播到开发服务器)。我首先需要删除开发服务器上的所有实体(我正在使用的实际开发应用程序,不要与本地开发服务器混淆)。我在数据存储区管理控制台中这样做,但在该过程完成后,我仍然剩下_GAE_MR_MapreduceState_GAE_MR_ShardState个实体。据我所知,这些在删除过程中应该是临时的。除此之外,偶尔当我进入数据存储区管理控制台(大约一半时间)时,我也会看到一些已删除的实体也会再次出现。我已经删除了几次。

我没有在数据存储区查看器中看到它们,但我不知道是否总是如此。我还没看到它们再次出现在这个视图中。在数据存储区查看器中,只有_AE_Backup_Information_AE_Backup_Information_Kind_Files_AE_Backup_Information_Kind_Type_Info_AE_DatastoreAdmin_Operation类型的实体。我在此视图中看不到_GAE_MR_MapreduceState_GAE_MR_ShardState个实体。

更新:我刚刚能够在数据存储区查看器中捕获我删除的某个实体。虽然只有一个已删除的实体类型,但这里只有一个实体可见(在我看到3或4个实体类型和数千个实体之前)。在我在数据存储区查看器中捕获它之后,我去了数据存储区管理控制台,发现这里可以看到相同的实体类型,尽管在这种情况下有两个。我这次也没有在数据存储区管理员中找到_GAE_MR_MapreduceState_GAE_MR_ShardState以及_AE_Backup_Information_AE_Backup_Information_Kind_Files_AE_Backup_Information_Kind_Type_Info_AE_DatastoreAdmin_Operation个实体。 END UPDATE

我没有尝试删除数据存储区管理控制台中的_GAE_MR_MapreduceState_GAE_MR_ShardState实体。这似乎有些不安全,因为这些实体是在删除操作期间创建的,我不知道它会做什么。我会尝试在datstore查看器中删除它们,但它们没有显示在那里。

我删除的实体显示在数据存储管理控制台_AE_Backup_Information_AE_Backup_Information_Kind_Files_AE_Backup_Information_Kind_Type_Info_AE_DatastoreAdmin_Operation实体中的那些时间也会在那里显示。所以这也很奇怪。

任务队列上没有任务,也没有任何作业正在运行。

这是某种同步问题吗?缓存是否未在某处更新?有什么方法可以重置一些东西来清除这些实体吗?

更新2:我尝试刷新Memcache,这没有什么区别。实体继续显示在数据存储管理控制台中,几乎100%的时间。我没有看到任何已删除的实体显示在数据存储区查看器中,但是因为我删除了之前出现的那个。

更新3:我只是尝试在另一个应用中执行相同类型的数据存储区删除操作,结果导致同样的损坏。我首先创建了一个备份,然后选择并删除了所有实体,这两个操作都来自数据存储管理控制台。

删除操作作业已完成。它们显示已完成的操作记录。任务队列中不再有任何作业。但是,在数据存储区管理控制台中,所有实体都可以再次显示!我删除了10个实体类型,大多数有几十个实体,一个有几千个。在数据存储管理控制台中,每个实体类型都会再次使用相同数量的实体列出。

在数据存储区查看器中,两个实体类型仍然存在,实体数量比删除操作之前更小(但仍然很重要)。在删除之前从6,855获得2,172。另一个在删除前有44个来自44个。

我再次刷新了Memcache。它没有任何区别。

我看到数据存储区管理员是experimental,但我不希望它通过执行简单的删除操作完全破坏我的数据存储区,之后无法重置数据存储区。我现在有两个应用程序,它们都启用了计费,这使我的客户资金损失,因为他们的数据存储已损坏而无法使用。我有什么选择?我可以收到谷歌某人的回复吗?这是Google App Engine支持的recommended forum

1 个答案:

答案 0 :(得分:0)

您的开发应用程序中似乎设置了旧式导出。您可能应该检查cron.yaml并禁用这些导出。理想情况下,您将使用Managed Import/Export service切换到较新(且更便宜)的出口。对于批量删除,当前的建议是将Cloud Dataflow与bulk delete template一起使用。基于托管导入/导出和Cloud Dataflow的删除都不会在您的项目中使用Cloud Datastore数据库,而旧式导出和删除都将使用您的Cloud Datastore数据库。