Job server connection problems
RAM 7.5/WAS 7.0.0.11 on Win2003 server, SQL2008.
I've been going through the RAM logs, and the following entry is consistently appearing:
00000037 SystemOut O CRRAM0001E 4743551 ERROR ws com.ibm.ram.repository.web.ws.quartz.jobs.AssetIndexBuilderJob - Error communicating with job server
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:180)
at sun.nio.cs.StreamDecoder$CharsetSD.readBytes(StreamDecoder.java:452)
at sun.nio.cs.StreamDecoder$CharsetSD.implRead(StreamDecoder.java:494)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:222)
at java.io.InputStreamReader.read(InputStreamReader.java:177)
at java.io.BufferedReader.fill(BufferedReader.java:148)
at java.io.BufferedReader.read(BufferedReader.java:169)
at com.ibm.ram.repository.web.ws.quartz.jobs.AssetIndexBuilderJob.executeJob(AssetIndexBuilderJob.java:59)
at com.ibm.ram.repository.web.ws.quartz.jobs.AbstractRAMJob.execute(AbstractRAMJob.java:80)
at org.quartz.core.JobRunShell.run(JobRunShell.java:203)
at com.ibm.ram.repository.web.ws.was.quartz.RAMThreadPool$RAMWork.run(RAMThreadPool.java:166)
at com.ibm.ws.asynchbeans.J2EEContext$RunProxy.run(J2EEContext.java:268)
at java.security.AccessController.doPrivileged(AccessController.java:202)
at com.ibm.ws.asynchbeans.J2EEContext.run(J2EEContext.java:768)
at com.ibm.ws.asynchbeans.WorkWithExecutionContextImpl.go(WorkWithExecutionContextImpl.java:222)
at com.ibm.ws.asynchbeans.ABWorkItemImpl.run(ABWorkItemImpl.java:159)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1550)
00000036 SystemOut O CRRAM0002W 4790034 WARN ws com.ibm.ram.repository.jobs.server.JobServerManager - Exception getting job server connection
java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:352)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:214)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:201)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:378)
at java.net.Socket.connect(Socket.java:537)
at java.net.Socket.connect(Socket.java:487)
at java.net.Socket.<init>(Socket.java:384)
at java.net.Socket.<init>(Socket.java:227)
at com.ibm.ram.repository.jobs.server.JobServerManager.getServerConnection(JobServerManager.java:311)
at com.ibm.ram.repository.jobs.server.JobServerManager.getJobServerConnection(JobServerManager.java:366)
at com.ibm.ram.repository.web.ws.quartz.jobs.ForumIndexBuilderJob.executeJob(ForumIndexBuilderJob.java:41)
at com.ibm.ram.repository.web.ws.quartz.jobs.AbstractRAMJob.execute(AbstractRAMJob.java:80)
at org.quartz.core.JobRunShell.run(JobRunShell.java:203)
at com.ibm.ram.repository.web.ws.was.quartz.RAMThreadPool$RAMWork.run(RAMThreadPool.java:166)
at com.ibm.ws.asynchbeans.J2EEContext$RunProxy.run(J2EEContext.java:268)
at java.security.AccessController.doPrivileged(AccessController.java:202)
at com.ibm.ws.asynchbeans.J2EEContext.run(J2EEContext.java:768)
at com.ibm.ws.asynchbeans.WorkWithExecutionContextImpl.go(WorkWithExecutionContextImpl.java:222)
at com.ibm.ws.asynchbeans.ABWorkItemImpl.run(ABWorkItemImpl.java:159)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1550)
I've searched for references on this but not found anything, anyone have any ideas on why this is occurring?
I've been going through the RAM logs, and the following entry is consistently appearing:
00000037 SystemOut O CRRAM0001E 4743551 ERROR ws com.ibm.ram.repository.web.ws.quartz.jobs.AssetIndexBuilderJob - Error communicating with job server
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:180)
at sun.nio.cs.StreamDecoder$CharsetSD.readBytes(StreamDecoder.java:452)
at sun.nio.cs.StreamDecoder$CharsetSD.implRead(StreamDecoder.java:494)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:222)
at java.io.InputStreamReader.read(InputStreamReader.java:177)
at java.io.BufferedReader.fill(BufferedReader.java:148)
at java.io.BufferedReader.read(BufferedReader.java:169)
at com.ibm.ram.repository.web.ws.quartz.jobs.AssetIndexBuilderJob.executeJob(AssetIndexBuilderJob.java:59)
at com.ibm.ram.repository.web.ws.quartz.jobs.AbstractRAMJob.execute(AbstractRAMJob.java:80)
at org.quartz.core.JobRunShell.run(JobRunShell.java:203)
at com.ibm.ram.repository.web.ws.was.quartz.RAMThreadPool$RAMWork.run(RAMThreadPool.java:166)
at com.ibm.ws.asynchbeans.J2EEContext$RunProxy.run(J2EEContext.java:268)
at java.security.AccessController.doPrivileged(AccessController.java:202)
at com.ibm.ws.asynchbeans.J2EEContext.run(J2EEContext.java:768)
at com.ibm.ws.asynchbeans.WorkWithExecutionContextImpl.go(WorkWithExecutionContextImpl.java:222)
at com.ibm.ws.asynchbeans.ABWorkItemImpl.run(ABWorkItemImpl.java:159)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1550)
00000036 SystemOut O CRRAM0002W 4790034 WARN ws com.ibm.ram.repository.jobs.server.JobServerManager - Exception getting job server connection
java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:352)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:214)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:201)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:378)
at java.net.Socket.connect(Socket.java:537)
at java.net.Socket.connect(Socket.java:487)
at java.net.Socket.<init>(Socket.java:384)
at java.net.Socket.<init>(Socket.java:227)
at com.ibm.ram.repository.jobs.server.JobServerManager.getServerConnection(JobServerManager.java:311)
at com.ibm.ram.repository.jobs.server.JobServerManager.getJobServerConnection(JobServerManager.java:366)
at com.ibm.ram.repository.web.ws.quartz.jobs.ForumIndexBuilderJob.executeJob(ForumIndexBuilderJob.java:41)
at com.ibm.ram.repository.web.ws.quartz.jobs.AbstractRAMJob.execute(AbstractRAMJob.java:80)
at org.quartz.core.JobRunShell.run(JobRunShell.java:203)
at com.ibm.ram.repository.web.ws.was.quartz.RAMThreadPool$RAMWork.run(RAMThreadPool.java:166)
at com.ibm.ws.asynchbeans.J2EEContext$RunProxy.run(J2EEContext.java:268)
at java.security.AccessController.doPrivileged(AccessController.java:202)
at com.ibm.ws.asynchbeans.J2EEContext.run(J2EEContext.java:768)
at com.ibm.ws.asynchbeans.WorkWithExecutionContextImpl.go(WorkWithExecutionContextImpl.java:222)
at com.ibm.ws.asynchbeans.ABWorkItemImpl.run(ABWorkItemImpl.java:159)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1550)
I've searched for references on this but not found anything, anyone have any ideas on why this is occurring?
7 answers
Hi,
1) Look in the indexJobServerSystemOutLog.txt and
indexJobServerSystemErrLog.txt logs to verify that your index jobserver
is even starting, or if there are errors starting them.
2) Look in the ramJobServerDebug.log to verify that there were no errors
running the job process that would of caused it to go away.
3) Verify that you don't have a firewall running on your system that is
blocking RAM on that machine from accessing the port that the index job
process uses to communicate. By default RAM uses the port range 4545 to
4555 to communicate between the app server instance and the index job
process.
Rich
1) Look in the indexJobServerSystemOutLog.txt and
indexJobServerSystemErrLog.txt logs to verify that your index jobserver
is even starting, or if there are errors starting them.
2) Look in the ramJobServerDebug.log to verify that there were no errors
running the job process that would of caused it to go away.
3) Verify that you don't have a firewall running on your system that is
blocking RAM on that machine from accessing the port that the index job
process uses to communicate. By default RAM uses the port range 4545 to
4555 to communicate between the app server instance and the index job
process.
Rich
By default, the indexer is working on a separate process (outside of the WAS VM).
When was the last time your indexer ran ? (check this from the Administration -> Tools -> Job Status)
This is from the Job Status:
Asset Index Builder No update necessary May 5, 2011 3:58:25 PM May 5, 2011 3:58:25 PM 0 seconds
Hi,
1) Look in the indexJobServerSystemOutLog.txt and
indexJobServerSystemErrLog.txt logs to verify that your index jobserver
is even starting, or if there are errors starting them.
2) Look in the ramJobServerDebug.log to verify that there were no errors
running the job process that would of caused it to go away.
3) Verify that you don't have a firewall running on your system that is
blocking RAM on that machine from accessing the port that the index job
process uses to communicate. By default RAM uses the port range 4545 to
4555 to communicate between the app server instance and the index job
process.
Rich
From the indexJobServerSystemErrLog.txt, it is full of:
Exception in thread "Thread-16217" com.ibm.ram.repository.core.IRepositoryAccess$RepositoryException: The TCP/IP connection to the host SQLAU182DEV115, port 50270 has failed. Error: "connect timed out. Verify the connection properties, check that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port, and that no firewall is blocking TCP connections to the port.".
This log has no time stamps, so it is not possible to tell when these errors are occurring. There is nothing wrong with the DB connection parameters, or the DB itself.
There are no firewalls in place.
From the ramJobServerDebug.log:
CRRAM0001E 27607748 ERROR com.ibm.ram.repository.fsearch.assets.AssetIndexBuilder - Error indexing reviewer data for asset 2048
java.lang.NoClassDefFoundError: com.ibm.ram.client.RAMCommunity
at java.lang.J9VMInternals.verifyImpl(Native Method)
at java.lang.J9VMInternals.verify(J9VMInternals.java:72)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:134)
at com.anz.emap.ram.governor.EmapGovernor.initPolicies(EmapGovernor.java:77)
at com.anz.emap.ram.governor.EmapGovernor.getPolicies(EmapGovernor.java:60)
at com.anz.emap.ram.governor.EmapGovernor.getAssetPolicies(EmapGovernor.java:26)
at com.ibm.ram.repository.rest.RestUtils.getPolicyGovernor(RestUtils.java:1733)
at com.ibm.ram.repository.rest.RestPoliciesService.doGet(RestPoliciesService.java:161)
at com.ibm.ram.repository.lifecycle.AssetLifecycleManager.getPolicyDefinition(AssetLifecycleManager.java:4226)
at com.ibm.ram.repository.lifecycle.AssetLifecycleManager.getPopulatedStateHistory(AssetLifecycleManager.java:1187)
at com.ibm.ram.repository.lifecycle.AssetLifecycleManager.getActiveStateHistory(AssetLifecycleManager.java:1486)
at com.ibm.ram.repository.lifecycle.AssetLifecycleManager.getActiveStateHistory(AssetLifecycleManager.java:1456)
at com.ibm.ram.repository.review.Utilities.getRequiredReviewers(Utilities.java:2166)
at com.ibm.ram.repository.fsearch.assets.AssetIndexBuilder.createLuceneDoc(AssetIndexBuilder.java:917)
at com.ibm.ram.repository.fsearch.assets.AssetIndexBuilder.updateDocs(AssetIndexBuilder.java:255)
at com.ibm.fsearch.index.AbstractIndexBuilder.buildIndex(AbstractIndexBuilder.java:188)
at com.ibm.ram.repository.fsearch.assets.AssetIndexBuilder.buildRepositoryIndex(AssetIndexBuilder.java:1493)
at com.ibm.ram.repository.jobs.AssetIndexJob.run(AssetIndexJob.java:222)
at java.lang.Thread.run(Thread.java:736)
Caused by:
java.lang.ClassNotFoundException: com.ibm.ram.client.RAMCommunity
at java.lang.ClassNotFoundException.<init>(ClassNotFoundException.java:77)
at java.net.URLClassLoader.findClass(URLClassLoader.java:383)
at java.lang.ClassLoader.loadClass(ClassLoader.java:652)
at java.lang.ClassLoader.loadClass(ClassLoader.java:618)
... 19 more
From the ramJobServerDebug.log:
CRRAM0001E 27607748 ERROR com.ibm.ram.repository.fsearch.assets.AssetIndexBuilder - Error indexing reviewer data for asset 2048
java.lang.NoClassDefFoundError: com.ibm.ram.client.RAMCommunity
at java.lang.J9VMInternals.verifyImpl(Native Method)
It seems that you have a custom policy governor (com.anz.emap.ram.governor.EmapGovernor) That uses the ram client api, but does not have the ramclient.jar on its path.
either add it to the WEB-INF/lib directory for the com.ibm.repository.web.war and com.ibm.repository.web.ws.was.war ... or .zip it with you policy .jar and add it as you policy.
From the ramJobServerDebug.log:
CRRAM0001E 27607748 ERROR com.ibm.ram.repository.fsearch.assets.AssetIndexBuilder - Error indexing reviewer data for asset 2048
java.lang.NoClassDefFoundError: com.ibm.ram.client.RAMCommunity
at java.lang.J9VMInternals.verifyImpl(Native Method)
The above error was resolved in RAM 7.5.0.1. See
https://jazz.net/jazz02/resource/itemName/com.ibm.team.workitem.WorkItem/41033
If possible, you should upgrade to RAM 7.5.0.2.
As a workaround in RAM 7.5, you will have to navigate to
http://<host>/ram/admin/repository/advancedConfiguration.faces
and uncheck the 'Perform all indexing in a remote process' checkbox. This will force the indexing process in run in the WAS java process. The indexer normally runs on a low priority thread at the OS level. When running in the WAS java process it will run in a low priority thread at the JVM level. This means the indexer may use more CPU and you may see reduced performance in other areas of RAM if you do not have enough CPU power available.
Adding the JARs to the WEB-INF/lib folder as stated in the above comment will not resolve the issue you are seeing.
Exception in thread "Thread-16217" com.ibm.ram.repository.core.IRepositoryAccess$RepositoryException: The TCP/IP connection to the host SQLAU182DEV115, port 50270 has failed. Error: "connect timed out. Verify the connection properties, check that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port, and that no firewall is blocking TCP connections to the port.".
This error says that the index process was unable to make a database connection. I'm not sure what was causing the error, but if you hit the first error it implies that the indexer eventually made the DB connection and started successfully.