2016-08-25 26 views
0

データストアから最大30kまでの名前空間のリストを取得しています。Google App Engine Datastoreタイムアウト例外

名前空間をフェッチするcronは毎日実行されます。しかし、ある日は正常に動作し、先日データストアのタイムアウト例外がスローされます。

com.google.appengine.api.datastore.DatastoreTimeoutException: データストア動作がタイムアウトし、又はデータを一時的 利用できませんでした。

関連コード:

DatastoreService ds = DatastoreServiceFactory.getDatastoreService(); 
FetchOptions options = FetchOptions.Builder.withChunkSize(150); 
Query q = new Query(Entities.NAMESPACE_METADATA_KIND); 

for (Entity e : ds.prepare(q).asIterable(options)){ 
    // A nonzero numeric id denotes the default namespace; 
    // see Namespace Queries, below 
    if (e.getKey().getId() != 0){ 
     continue; 
    }else{ 
     namespaces.add(e.getKey().getName()); 
    } 
} 

何の問題だろうか?公式ドキュメントによると

答えて

1

DatastoreTimeoutExceptionは時にデータストアの動作時間 投げ出されます。これは、あまりにも多くのプロパティーを持つ エンティティまたはエンティティをあまりにも多く入れたり、取得したり、削除しようとしたり、データストアがオーバーロードされているか、問題が発生した場合に発生します。

これは、リクエストに問題があるデータストアを意味します。次のようなエラーを処理してください:

import com.google.appengine.api.datastore.DatastoreTimeoutException;  
    try { 
     // Code that could result in a timeout 
    } catch (DatastoreTimeoutException e) { 
     // Display a timeout-specific error page 
    } 
関連する問題