2015-05-27 31 views
0

雖然從ATG索引,始終我們得到以下錯誤:CAS的RecordStore SocketTimeoutException

Caused by: java.net.SocketTimeoutException: SocketTimeoutException invoking http://(endeca-server):8500/ExmProd_en_data/ : Read timed out


下面是日誌:

JBoss服務器(ATG):

2015-05-17 19:07:12,278 INFO [nucleusNamespace.atg.endeca.index.DataDocumentSubmitter] (ProcessItemThread-482) Will attempt to contact record store "ExmProd_en_data" on host "<endeca-server>" on port 8,500 
... 
(/atg/dynamo/service/Scheduler-reusablejobhandler-ProductCatalogSimpleIndexingAdmin - Baseline) Bulk load completed with "true" result in 6,097,145 milliseconds. 
2015-05-17 20:48:37,330 INFO [nucleusNamespace.atg.endeca.index.SchemaDocumentSubmitter] (/atg/dynamo/service/Scheduler-reusablejobhandler-ProductCatalogSimpleIndexingAdmin - Baseline) Ending session of record store ExmProd_en_schema with transactionId 48 (submitted 11,531 records). 
2015-05-17 20:48:37,415 INFO [nucleusNamespace.atg.endeca.index.DimensionDocumentSubmitter] (/atg/dynamo/service/Scheduler-reusablejobhandler-ProductCatalogSimpleIndexingAdmin - Baseline) Ending session of record store ExmProd_en_dimvals with transactionId 48 (submitted 178,870 records). 
2015-05-17 20:48:38,112 INFO [nucleusNamespace.atg.endeca.index.DataDocumentSubmitter] (/atg/dynamo/service/Scheduler-reusablejobhandler-ProductCatalogSimpleIndexingAdmin - Baseline) Ending session of record store ExmProd_en_data with transactionId 48 (submitted 1,127,618 records). 
... 
2015-05-17 21:18:38,164 WARN [org.apache.cxf.phase.PhaseInterceptorChain] (/atg/dynamo/service/Scheduler-reusablejobhandler-ProductCatalogSimpleIndexingAdmin - Baseline) Interceptor for {http://recordstore.itl.endeca.com/}RecordStoreService#{http://recordstore.itl.endeca.com/}commitTransaction has thrown exception, unwinding now 
org.apache.cxf.interceptor.Fault: Could not send Message. 
    at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:64) 
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:262) 
    at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:532) 
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:464) 
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:367) 
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:320) 
    at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:89) 
    at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:134) 
    at com.sun.proxy.$Proxy179.commitTransaction(Unknown Source) 
    at atg.endeca.index.RecordStoreDocumentSubmitterSessionImpl.endSession(RecordStoreDocumentSubmitterSessionImpl.java:593) 
    at atg.endeca.index.AbstractRecordStoreAggregateSession.commitPending(AbstractRecordStoreAggregateSession.java:494) 
    at atg.endeca.index.AbstractRecordStoreAggregateSession.endSession(AbstractRecordStoreAggregateSession.java:432) 
    at atg.endeca.index.RecordSubmitterImpl.endSession(RecordSubmitterImpl.java:231) 
    at atg.endeca.index.admin.IndexingPhase.doPhaseCleanup(IndexingPhase.java:376) 
    at atg.endeca.index.admin.IndexingPhase.performPhaseTasks(IndexingPhase.java:324) 
    at atg.endeca.index.admin.IndexingPhase.performPhaseTasksSerially(IndexingPhase.java:243) 
    at atg.endeca.index.admin.IndexingJob.performJobSerially(IndexingJob.java:281) 
    at com.example.commerce.endeca.index.admin.EXMSimpleIndexingAdmin.indexBaseline(EXMSimpleIndexingAdmin.java:428) 
    at atg.endeca.index.admin.SimpleIndexingAdmin.indexBaseline(SimpleIndexingAdmin.java:637) 
    at com.example.commerce.endeca.index.admin.EXMSimpleIndexingAdmin.indexBaseline(EXMSimpleIndexingAdmin.java:262) 
    at atg.endeca.index.admin.SimpleIndexingAdmin.performScheduledTask(SimpleIndexingAdmin.java:867) 
    at atg.service.scheduler.ScheduledJob.runJobs(ScheduledJob.java:479) 
    at atg.service.scheduler.Scheduler$2handler.run(Scheduler.java:780) 
Caused by: java.net.SocketTimeoutException: SocketTimeoutException invoking http://<endeca-server>:8500/ExmProd_en_data/: Read timed out 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.mapException(HTTPConduit.java:1457) 
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1442) 
    at org.apache.cxf.io.AbstractWrappedOutputStream.close(AbstractWrappedOutputStream.java:72) 
    at org.apache.cxf.io.AbstractThresholdOutputStream.close(AbstractThresholdOutputStream.java:102) 
    at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56) 
    at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:658) 
    at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62) 
    ... 22 more 
Caused by: java.net.SocketTimeoutException: Read timed out 
    at java.net.SocketInputStream.socketRead0(Native Method) 
    at java.net.SocketInputStream.read(SocketInputStream.java:129) 
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:218) 
    at java.io.BufferedInputStream.read1(BufferedInputStream.java:258) 
    at java.io.BufferedInputStream.read(BufferedInputStream.java:317) 
    at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:698) 
    at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:641) 
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1218) 
    at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:379) 
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1577) 
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1520) 
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1428) 
    ... 27 more 

Endeca CAS服務器(cas-serv ice.log):
(日誌中沒有發現錯誤,只得到重複下面的警告常常)

2015-05-15 03:13:02,486 WARN [ExmProd_en_data] [ExmProd_en_data-cleaner-1] com.endeca.itl.recordstore.impl.Cleaner: Exception caught while performing cleanup 
java.lang.UnsupportedOperationException: Cleans while transactions are active not implemented yet 
    at com.endeca.itl.recordstore.impl.RecordStoreImpl.clean(RecordStoreImpl.java:566) 
    at com.endeca.itl.recordstore.impl.Cleaner$1.run(Cleaner.java:30) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) 
    at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317) 
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150) 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98) 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:180) 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:204) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
    at java.lang.Thread.run(Thread.java:662) 
    at com.endeca.itl.util.LoggingContextAwareThread.run(LoggingContextAwareThread.java:26) 

ATG版本:10.2(ProductCatalogSimpleIndexingAdmin)
Endeca的版本: 3.1.2(基於流水線,即Forge - > Dgidx)。

任何幫助解決這個問題非常感謝。

+0

在你的'DataIngest.xml'中,'CAS'組件中'httpSocketTimeout'的值是多少?嘗試並增加這個,看看它是否有幫助。 – radimpe

+0

@radimpe它使用Forge而不是CAS Crawler。糾正我,如果我錯了,'CAS'組件只有在CAS抓取時纔有幫助。 – KrishPrabakar

+0

它必須使用CAS,或者你爲什麼提供'cas-service.log'。另外,'ProductCatalogSimpleIndexingAdmin'將會調用'CAS'來生成你需要的文件。 'RecordStoreService'也是CAS的一部分。 'ATG - ENDECA'集成根本不使用僞造。它是「CAS」,然後是「DGIDX」。 – radimpe

回答

2

通過源代碼挖掘,發現類com.endeca.itl.service.ServiceLocator有一個套接字超時設置。


解決方法:

設置環境變量com.endeca.itl.socketReceiveTimeout比當前套接字超時時間,更高的價值。

例如,–Dcom.endeca.itl.socketReceiveTimeout=3600000在您的適當的Java虛擬機的服務器和重新運行)。

(默認爲30分鐘= 1800000毫秒)。 (非常不幸的是,Oracle沒有在任何地方記錄這樣一個重要的環境特定配置,更令人驚訝的是,這樣的配置被保留在只讀訪問的私有字段中;這應該是一個明確的屬性,所有IndexingOutputConfig組件)。