0
votes

Upon attempting to walk through install guide of MFP Operational Analytics, I encountered an OverlappingFileLockException when trying to start the MFP server. However, such issue doesn't occur when I exclude Operational Analytics from server.xml of Liberty Core. Is there anyone can help us with this issue?

Installing Operational Analytics

[11/03/15 12:37:27:261 EST] 0000002c com.ibm.puremeap.util.DataUtil                               I getDataSource Returning Data Source based upon jndiName=java:comp/env/jdbc/AppCenterDS dataSource=com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource@59649184
[11/03/15 12:37:28:696 EST] 00000032 com.ibm.ws.webcontainer.osgi.webapp.WebGroup                 I SRVE0169I: Loading Web Module: Worklight Console.
[11/03/15 12:37:28:696 EST] 00000032 com.ibm.ws.webcontainer                                      I SRVE0250I: Web Module Worklight Console has been bound to default_host.
[11/03/15 12:37:28:696 EST] 00000032 com.ibm.ws.http.internal.VirtualHostImpl                     A CWWKT0016I: Web application available (default_host): http://auworklighttest.gabraus.local:9080/worklightconsole/
[11/03/15 12:37:28:743 EST] 00000032 com.ibm.ws.session.WASSessionCore                            I SESN0176I: A new session context will be created for application key default_host/worklightconsole
[11/03/15 12:37:28:743 EST] 00000032 com.ibm.ws.util                                              I SESN0172I: The session manager is using the Java default SecureRandom implementation for session ID generation.
[11/03/15 12:37:28:790 EST] 00000032 com.ibm.ws.webcontainer.servlet                              I SRVE0242I: [worklightconsole] [/worklightconsole] [servicesServlet]: Initialization successful.
[11/03/15 12:37:28:790 EST] 00000032 com.ibm.ws.app.manager.AppMessageHelper                      A CWWKZ0001I: Application worklightconsole started in 5.523 seconds.
[11/03/15 12:37:29:585 EST] 0000002d com.ibm.ws.rsadapter.spi.InternalGenericDataStoreHelper      I DSRA8203I: Database product name : DB2/NT64
[11/03/15 12:37:29:585 EST] 0000002d com.ibm.ws.rsadapter.spi.InternalGenericDataStoreHelper      I DSRA8204I: Database product version : SQL10014
[11/03/15 12:37:29:585 EST] 0000002d com.ibm.ws.rsadapter.spi.InternalGenericDataStoreHelper      I DSRA8205I: JDBC driver name  : IBM Data Server Driver for JDBC and SQLJ
[11/03/15 12:37:29:585 EST] 0000002d com.ibm.ws.rsadapter.spi.InternalGenericDataStoreHelper      I DSRA8206I: JDBC driver version  : 4.15.113
[11/03/15 12:37:29:585 EST] 0000002c com.ibm.ejs.j2c.FreePool                                     E J2CA0046E: Method createManagedConnectionWithMCWrapper caught an exception during creation of the ManagedConnection for resource jdbc/AppCenterDS, throwing ResourceAllocationException. Original exception: <=================================>Exception Message -> null
java.nio.channels.OverlappingFileLockException
    at sun.nio.ch.SharedFileLockTable.checkList(FileLockTable.java:268)
    at sun.nio.ch.SharedFileLockTable.add(FileLockTable.java:165)
    at sun.nio.ch.FileChannelImpl.lock(FileChannelImpl.java:1034)
    at java.nio.channels.FileChannel.lock(FileChannel.java:1064)
    at com.ibm.db2.jcc.am.jp.a(jp.java:629)
    at com.ibm.db2.jcc.am.ip.a(ip.java:403)
    at com.ibm.db2.jcc.am.ip.a(ip.java:475)
    at com.ibm.db2.jcc.am.Connection.isLicenseValidatedWithServerLicenseProc(Connection.java:8506)
    at com.ibm.db2.jcc.am.Connection.checkForLicenseRestrictions(Connection.java:4787)
    at com.ibm.db2.jcc.am.Connection.completeConnect(Connection.java:4730)
    at com.ibm.db2.jcc.t4.b.completeConnect(b.java:611)
    at com.ibm.db2.jcc.t4.b.a(b.java:423)
    at com.ibm.db2.jcc.t4.b.a(b.java:395)
    at com.ibm.db2.jcc.t4.b.<init>(b.java:333)
    at com.ibm.db2.jcc.DB2PooledConnection.<init>(DB2PooledConnection.java:83)
    at com.ibm.db2.jcc.DB2ConnectionPoolDataSource.getPooledConnectionX(DB2ConnectionPoolDataSource.java:348)
    at com.ibm.db2.jcc.DB2ConnectionPoolDataSource.getPooledConnection(DB2ConnectionPoolDataSource.java:131)
    at com.ibm.ws.rsadapter.spi.InternalGenericDataStoreHelper$1.run(InternalGenericDataStoreHelper.java:1196)
    at java.security.AccessController.doPrivileged(AccessController.java:333)
    at com.ibm.ws.rsadapter.spi.InternalGenericDataStoreHelper.getPooledConnection(InternalGenericDataStoreHelper.java:1212)
    at com.ibm.ws.rsadapter.spi.InternalDB2UniversalDataStoreHelper.getPooledConnection(InternalDB2UniversalDataStoreHelper.java:1509)
    at com.ibm.ws.rsadapter.spi.WSRdbDataSource.getPooledConnection(WSRdbDataSource.java:331)
    at com.ibm.ws.rsadapter.spi.WSManagedConnectionFactoryImpl.getConnection(WSManagedConnectionFactoryImpl.java:1180)
    at com.ibm.ws.rsadapter.spi.WSManagedConnectionFactoryImpl.createManagedConnection(WSManagedConnectionFactoryImpl.java:930)
    at com.ibm.ws.rsadapter.spi.WSManagedConnectionFactoryImpl.createManagedConnection(WSManagedConnectionFactoryImpl.java:615)
    at com.ibm.ejs.j2c.FreePool.createManagedConnectionWithMCWrapper(FreePool.java:1768)
    at com.ibm.ejs.j2c.FreePool.createOrWaitForConnection(FreePool.java:1512)
    at com.ibm.ejs.j2c.PoolManager.reserve(PoolManager.java:3040)
    at com.ibm.ejs.j2c.PoolManager.reserve(PoolManager.java:2392)
    at com.ibm.ejs.j2c.ConnectionManager.allocateMCWrapper(ConnectionManager.java:1109)
    at com.ibm.ejs.j2c.ConnectionManager.allocateConnection(ConnectionManager.java:676)
    at com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection(WSJdbcDataSource.java:354)
    at com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection(WSJdbcDataSource.java:325)
    at com.ibm.puremeap.resources.data.impl.PureMeapData.recordDataBaseInfo(PureMeapData.java:270)
    at com.ibm.puremeap.resources.data.impl.PureMeapData.<init>(PureMeapData.java:173)
    at com.ibm.puremeap.resources.data.impl.PureMeapData.fromDataSource(PureMeapData.java:103)
    at com.ibm.puremeap.resources.data.DataStoreFactory.getJPADBStore(DataStoreFactory.java:46)
    at com.ibm.puremeap.resources.data.DataStoreFactory.getDataStore(DataStoreFactory.java:34)
    at com.ibm.puremeap.util.DataUtil.getData(DataUtil.java:453)
    at com.ibm.puremeap.listeners.AppCenterServletContextListener.checkAndUpgradeTo60(AppCenterServletContextListener.java:171)
    at com.ibm.puremeap.listeners.AppCenterServletContextListener.contextInitialized(AppCenterServletContextListener.java:88)
    at com.ibm.ws.webcontainer.webapp.WebApp.notifyServletContextCreated(WebApp.java:2374)
    at com.ibm.ws.webcontainer.webapp.WebApp.initialize(WebApp.java:1044)
    at com.ibm.ws.webcontainer.webapp.WebApp.initialize(WebApp.java:6342)
    at com.ibm.ws.webcontainer.osgi.DynamicVirtualHost.startWebApp(DynamicVirtualHost.java:446)
    at com.ibm.ws.webcontainer.osgi.DynamicVirtualHost.startWebApplication(DynamicVirtualHost.java:441)
    at com.ibm.ws.webcontainer.osgi.WebContainer.startWebApplication(WebContainer.java:761)
    at com.ibm.ws.webcontainer.osgi.WebContainer.startModule(WebContainer.java:739)
    at com.ibm.ws.app.manager.web.internal.WebModuleHandlerImpl.deployModule(WebModuleHandlerImpl.java:106)
    at com.ibm.ws.app.manager.module.internal.DeployedAppInfoBase.deployModule(DeployedAppInfoBase.java:538)
    at com.ibm.ws.app.manager.module.internal.DeployedAppInfoBase.deployModules(DeployedAppInfoBase.java:457)
    at com.ibm.ws.app.manager.module.internal.DeployedAppInfoBase.deployApp(DeployedAppInfoBase.java:411)
    at com.ibm.ws.app.manager.war.internal.WARApplicationHandlerImpl.install(WARApplicationHandlerImpl.java:73)
    at com.ibm.ws.app.manager.internal.statemachine.StartAction.execute(StartAction.java:139)
    at com.ibm.ws.app.manager.internal.statemachine.ApplicationStateMachineImpl.enterState(ApplicationStateMachineImpl.java:1166)
    at com.ibm.ws.app.manager.internal.statemachine.ApplicationStateMachineImpl.run(ApplicationStateMachineImpl.java:779)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1177)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
    at java.lang.Thread.run(Thread.java:795)
<=================================>
2
You've mixed a lot of concepts here. Your stacktrace shows a Java package with "puremeap" in it, which is Application Center. Application Center uses a SQL database (apparently DB2 in your installation?). Operational Analytics is a WAR with an embedded store library, and does not use a relational database at all; certainly not DB2. I have no idea how they could possibly interfere with each other to cause the exception you see. - mikerott

2 Answers

0
votes

I've not hit this problem but that may be because my practice has been to install the Operational Analytics server on its own Liberty instance. While this should not be necessary it is closer to the pattern you would use in production where not only would you have a separate Java EE Server instance but probably would have one or more dedicated OA machines.

0
votes

The tech note http://www-01.ibm.com/support/docview.wss?uid=swg21664366 explains that this is due to "more than one instance of the com.ibm.db2.jcc.DB2Driver class in the JVM". In other words, the application server configuration contains two or more "libraries":

  • In Liberty, you have two or more elements that declare a DB2 JDBC driver.
  • In WebSphere Application Server Full Profile, you have two or more "JDBC providers" that use a DB2 JDBC driver.

The fix is to use a single element or a single JDBC provider instead.