Я использую стандартную среду App Engine, а мои службы используют API поиска а>.
Итак, в основном в моей службе я делаю что-то вроде:
IndexSpec indexSpec = IndexSpec.newBuilder().setName(indexName).build();
Index index = SearchServiceFactory.getSearchService().getIndex(indexSpec);
index.putAsync(document);
Но когда я запускаю свои тесты JUnit, я часто получаю следующее исключение:
17 апреля 2018 г., 11:25:33 com.google.appengine.api.search.dev.LocalSearchService indexDocumentForApp СЕРЬЕЗНО: невозможно получить доступ к индексу истекло время ожидания: NativeFSLock@/Users/freddyboucher/Private/Programming/LearnKeeper/learnkeeper-server/WEB-INF/appengine-generated/indexes/dGVzdA/Qk9PS1M..P/write.lock на com.google.appengine.repackaged.org .apache.lucene.store.Lock.obtain(Lock.java:85) на com.google.appengine.repackaged.org.apache.lucene.index.IndexWriter.init(IndexWriter.java:1562) на com.google.appengine .repackaged.org.apache.lucene.index.IndexWriter.(IndexWriter.java:1090) в com.google.appengine.api.search.dev.LocalSearchService.getIndexWriter(LocalSearchService.java:800) в com.google.appengine. api.search.dev.LocalSearchService.indexDocumentForApp(LocalSearchService.java:290) в com.google.appengine.api.search.dev.LocalSearchService.indexDocument(LocalSearchSe rvice.java:268) в sun.reflect.NativeMethodAccessorImpl.invoke0(собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) в sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) в java .lang.reflect.Method.invoke(Method.java:498) на com.google.appengine.tools.development.ApiProxyLocalImpl$AsyncApiCall.invokeApiMethodJava(ApiProxyLocalImpl.java:657) на com.google.appengine.tools.development.ApiProxyLocalImpl $AsyncApiCall.callInternal(ApiProxyLocalImpl.java:612) в com.google.appengine.tools.development.ApiProxyLocalImpl$AsyncApiCall.call(ApiProxyLocalImpl.java:569) в com.google.appengine.tools.development.ApiProxyLocalImpl$AsyncApiCall.call (ApiProxyLocalImpl.java:541) в java.util.concurrent.Executors$PrivilegedCallable$1.run(Executors.java:533) в java.security.AccessController.doPrivileged(собственный метод) в java.util.concurrent.Executors$PrivilegedC allable.call(Executors.java:530) в java.util.concurrent.FutureTask.run(FutureTask.java:266) в java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) в java.util.concurrent .ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) на java.lang.Thread.run(Thread.java:748)