2017-12-30 40 views
0

テストでは、Search Serviceの実装でロックの競合に関する問題が発生することがあります。私は、次のようなエラーを参照してください。Google Appengine LocalSearchServiceはロックの競合によりテストに失敗します

Dec 30, 2017 6:09:28 PM com.google.appengine.api.search.dev.LocalSearchService indexDocumentForApp 
SEVERE: Unable to access index 
com.google.appengine.repackaged.org.apache.lucene.store.LockObtainFailedException: Lock obtain timed out: [email protected]/[path]/WEB-INF/appengine-generated/indexes/dGVzdA/Ym9va3Rh..P/write.lock 
    at com.google.appengine.repackaged.org.apache.lucene.store.Lock.obtain(Lock.java:85) 
    at com.google.appengine.repackaged.org.apache.lucene.index.IndexWriter.init(IndexWriter.java:1562) 
    at com.google.appengine.repackaged.org.apache.lucene.index.IndexWriter.<init>(IndexWriter.java:1090) 
    at com.google.appengine.api.search.dev.LocalSearchService.getIndexWriter(LocalSearchService.java:800) 
    at com.google.appengine.api.search.dev.LocalSearchService.indexDocumentForApp(LocalSearchService.java:290) 
    at com.google.appengine.api.search.dev.LocalSearchService.indexDocument(LocalSearchService.java:268) 
    at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at com.google.appengine.tools.development.ApiProxyLocalImpl$AsyncApiCall.invokeApiMethodJava(ApiProxyLocalImpl.java:604) 
    at com.google.appengine.tools.development.ApiProxyLocalImpl$AsyncApiCall.callInternal(ApiProxyLocalImpl.java:559) 
    at com.google.appengine.tools.development.ApiProxyLocalImpl$AsyncApiCall.call(ApiProxyLocalImpl.java:516) 
    at com.google.appengine.tools.development.ApiProxyLocalImpl$AsyncApiCall.call(ApiProxyLocalImpl.java:488) 
    at java.util.concurrent.Executors$PrivilegedCallable$1.run(Executors.java:533) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.util.concurrent.Executors$PrivilegedCallable.call(Executors.java:530) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 

これはテスト自体のいずれかの基本的な競合状態に関連すると思われるが、テストと妙が発生していません。誰もがこのバグの回避策を持っていますか?

答えて

0

これは、検索サービスのテスト設定がないテストでSearch Service Indexerを使用したためです。不快なテストに正しい設定を追加することで問題は解決しました。

private final LocalServiceTestHelper helper = 
     new LocalServiceTestHelper(
       new LocalSearchServiceTestConfig()); 

@Before 
public void setUp() throws Exception { 
    helper.setUp(); 
} 

@After 
public void tearDown() { 
    helper.tearDown(); 
} 
関連する問題