簡體   English   中英

數據存儲到 Firestore(數據存儲模式)自動遷移:在 REDIRECT_STRONGLY_CONSISTENT_READS 步驟之后訪問數據存儲時請求超時

[英]Datastore to Firestore(datastore mode) automatic migration: request timeout while accessing datastore after REDIRECT_STRONGLY_CONSISTENT_READS step

我正在使用 Objectify(v5) 在 App Engine 標准環境中使用 Java 訪問 Datastore。 實體由 Objectify 自動緩存,我也單獨使用 Memcache。

這個數據存儲區 API 超時問題恰好在REDIRECT_STRONGLY_CONSISTENT_READS遷移步驟之后開始發生。 奇怪的是,它大約每隔一小時或兩小時發生一次,持續 3-4 分鍾,然后恢復正常。 由於請求延遲從約 200 毫秒上升到超過 60 秒,因此正在創建許多新實例並收取高額費用。

以下是一些錯誤:

com.google.api.server.spi.SystemService invokeServiceMethod: exception occurred while calling backend method 
java.util.concurrent.CancellationException: Task was cancelled. 
at com.google.common.util.concurrent.AbstractFuture.cancellationExceptionWithCause(AbstractFuture.java:1550)
at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:590)
at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:467)
at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.java:122)
at com.google.appengine.tools.development.TimedFuture.get(TimedFuture.java:55)
at com.google.common.util.concurrent.ForwardingFuture.get(ForwardingFuture.java:68)
at com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:89)
at com.google.appengine.api.datastore.Batcher$ReorderingMultiFuture.get(Batcher.java:114)
at com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:89)
at com.googlecode.objectify.cache.TriggerFuture.get(TriggerFuture.java:100)
at com.googlecode.objectify.impl.ResultAdapter.now(ResultAdapter.java:34)
at com.googlecode.objectify.util.ResultWrapper.translate(ResultWrapper.java:22)
at com.googlecode.objectify.util.ResultWrapper.translate(ResultWrapper.java:10)
at com.googlecode.objectify.util.ResultTranslator.nowUncached(ResultTranslator.java:21)
at com.googlecode.objectify.util.ResultCache.now(ResultCache.java:30)
at com.googlecode.objectify.util.ResultWrapper.translate(ResultWrapper.java:22)
at com.googlecode.objectify.util.ResultWrapper.translate(ResultWrapper.java:10)
at com.googlecode.objectify.util.ResultTranslator.nowUncached(ResultTranslator.java:21)
at com.googlecode.objectify.util.ResultCache.now(ResultCache.java:30)

com.googlecode.objectify.cache.EntityMemcache getAll: Error obtaining cache for [<dummy-entity-name>]
    java.util.concurrent.CancellationException: Task was cancelled.

java.lang.InterruptedException
        at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:460)

我嘗試升級到最新版本:

implementation 'com.google.appengine:appengine-api-1.0-sdk:2.0.5'
implementation 'javax.servlet:javax.servlet-api:3.1.0'
implementation 'com.googlecode.objectify:objectify:5.1.25'

並且還刷新了內存緩存。 沒有任何效果。

有沒有人遇到過這個問題?

事實證明這是遷移本身的問題。 聯系 Google Cloud 支持(付費)后,Datastore/Firestore 產品團隊暫停了遷移,順便說一句,我自己無法完成,我的項目不允許這樣做。 他們做了一些修復並完成了遷移。 現在 Datastore 查詢按預期運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM