BaseX Concurrency

Wednesday, 7 January 2015 · 3 messages
BC
Bondeson, Carl7 Jan 2015 17:16 #
I have a multithreaded web application running under JBoss 6.2. It seems that 2 threads are attempting access concurrently. Any suggestions.
01/07/15 10:07:14 WARN  [server ]: Error creating connection to BaseX server - attempt 0
java.io.IOException: Improper use? Potential bug? Your feedback is welcome:
Contact: basex-talk at mailman.uni-konstanz.de
Version: BaseX 7.6
Java: Oracle Corporation, 1.7.0_71
OS: Windows Server 2008 R2, amd64
Stack Trace:
java.nio.channels.OverlappingFileLockException
  sun.nio.ch.SharedFileLockTable.checkList(FileLockTable.java:255)
  sun.nio.ch.SharedFileLockTable.add(FileLockTable.java:152)
  sun.nio.ch.FileChannelImpl.tryLock(FileChannelImpl.java:1056)
  org.basex.io.random.TableDiskAccess.lck(TableDiskAccess.java:183)
  org.basex.io.random.TableDiskAccess.sharedLock(TableDiskAccess.java:170)
  org.basex.io.random.TableDiskAccess.<init>(TableDiskAccess.java:83)
  org.basex.data.DiskData.init(DiskData.java:122)
  org.basex.data.DiskData.<init>(DiskData.java:92)
  org.basex.core.cmd.Open.open(Open.java:70)
  org.basex.core.cmd.Open.run(Open.java:36)
  org.basex.core.Command.run(Command.java:342)
  org.basex.core.Command.run(Command.java:117)
  org.basex.core.cmd.Check.run(Check.java:38)
  org.basex.core.Command.run(Command.java:342)
  org.basex.core.Command.exec(Command.java:321)
  org.basex.core.Command.execute(Command.java:78)
  org.basex.server.ClientListener.run(ClientListener.java:145)
                at com.pilotfish.eip.basex.BaseXClient.execute(BaseXClient.java:79)
                at com.pilotfish.eip.basex.BaseXClient.execute(BaseXClient.java:91)
                at com.pilotfish.eip.basex.txlog.BaseXSubmitter.createBaseXClient(BaseXSubmitter.java:54)
                at com.pilotfish.eip.basex.txlog.BaseXSubmitter.getBaseXClient(BaseXSubmitter.java:45)
                at com.pilotfish.eip.basex.txlog.BaseXSubmitter.execute(BaseXSubmitter.java:111)
                at com.pilotfish.eip.rest.impl.TransactionLogServiceImpl.constructHealthComponentSettings(TransactionLogServiceImpl.java:726)
                at com.pilotfish.eip.rest.impl.TransactionLogServiceImpl.setHealthComponentConfiguration(TransactionLogServiceImpl.java:696)
                at com.pilotfish.eip.rest.impl.TransactionLogServiceImpl.setHealthComponentConfiguration(TransactionLogServiceImpl.java:700)
                at com.pilotfish.eip.rest.impl.TransactionLogServiceImpl.setHealthComponentConfiguration(TransactionLogServiceImpl.java:700)
                at com.pilotfish.eip.rest.impl.TransactionLogServiceImpl.getHealthComponentConfiguration(TransactionLogServiceImpl.java:607)
                at com.pilotfish.eip.rest.services.TransactionLogResource.getHealthComponentConfiguration(TransactionLogResource.java:247)
                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                at java.lang.reflect.Method.invoke(Method.java:606)
                at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81)
                at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:151)
                at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:171)
                at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:195)
                at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:104)
                at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:353)
                at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:343)
                at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102)
                at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:255)
                at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)
                at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)
                at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
                at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
                at org.glassfish.jersey.internal.Errors.process(Errors.java:267)
                at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:318)
                at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:235)
                at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:983)
                at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:359)
                at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:372)
                at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:335)
                at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:218)
                at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295)
                at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
                at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
                at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149)
                at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169)
                at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145)
                at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97)
                at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102)
                at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:336)
                at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
                at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653)
                at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:926)
                at java.lang.Thread.run(Thread.java:745)
Carl R Bondeson Systems Developer Department of Public Health Data Processing 410 Capitol Ave Hartford, CT 06134 Phone: 860-509-7434 carl.bondeson at ct.gov<mailto:carl.bondeson at ct.gov> [cid:image001.jpg at 01D02A62.E91E67F0]<http://www.ct.gov/dph>
BC
Bondeson, Carl7 Jan 2015 17:52 #
Additional information There are 2 classes running that are both using BaseX. Mine uses a client/server paradigm
       // create BaseX session on server
       mapperSession = new ClientSession("localhost", 1984, "admin",
                           "admin");
       // open database on server
       mapperSession.execute("open Mapper");
.. Run queries Etc. etc. A helper method to provide cleanup in a highly threaded environment
       public void Close() {
              try {
                     mapperSession.close();
              } catch (IOException e) {

                           basexlog.error("BaseXMapper: Error during close:"
                                         + e.getLocalizedMessage());
              }
} I am unaware of the other application's model. My class is used in a numerous XSLT Xalan callouts to provide various translation, transformation, and validation processing that would be problematic to code in straight XSLT 1.0.
Quoted text · basex-talk-bounces at mailman.uni-konstanz.de · 88 lines
From: basex-talk-bounces at mailman.uni-konstanz.de [mailto:basex-talk-bounces at mailman.uni-konstanz.de] On Behalf Of Bondeson, Carl Sent: Wednesday, January 07, 2015 10:16 AM To: basex-talk at mailman.uni-konstanz.de Subject: [basex-talk] BaseX Concurrency I have a multithreaded web application running under JBoss 6.2. It seems that 2 threads are attempting access concurrently. Any suggestions. 01/07/15 10:07:14 WARN [server ]: Error creating connection to BaseX server - attempt 0 java.io.IOException: Improper use? Potential bug? Your feedback is welcome: Contact: basex-talk at mailman.uni-konstanz.de<mailto:basex-talk at mailman.uni-konstanz.de> Version: BaseX 7.6 Java: Oracle Corporation, 1.7.0_71 OS: Windows Server 2008 R2, amd64 Stack Trace: java.nio.channels.OverlappingFileLockException sun.nio.ch.SharedFileLockTable.checkList(FileLockTable.java:255) sun.nio.ch.SharedFileLockTable.add(FileLockTable.java:152) sun.nio.ch.FileChannelImpl.tryLock(FileChannelImpl.java:1056) org.basex.io.random.TableDiskAccess.lck(TableDiskAccess.java:183) org.basex.io.random.TableDiskAccess.sharedLock(TableDiskAccess.java:170) org.basex.io.random.TableDiskAccess.<init>(TableDiskAccess.java:83) org.basex.data.DiskData.init(DiskData.java:122) org.basex.data.DiskData.<init>(DiskData.java:92) org.basex.core.cmd.Open.open(Open.java:70) org.basex.core.cmd.Open.run(Open.java:36) org.basex.core.Command.run(Command.java:342) org.basex.core.Command.run(Command.java:117) org.basex.core.cmd.Check.run(Check.java:38) org.basex.core.Command.run(Command.java:342) org.basex.core.Command.exec(Command.java:321) org.basex.core.Command.execute(Command.java:78) org.basex.server.ClientListener.run(ClientListener.java:145) at com.pilotfish.eip.basex.BaseXClient.execute(BaseXClient.java:79) at com.pilotfish.eip.basex.BaseXClient.execute(BaseXClient.java:91) at com.pilotfish.eip.basex.txlog.BaseXSubmitter.createBaseXClient(BaseXSubmitter.java:54) at com.pilotfish.eip.basex.txlog.BaseXSubmitter.getBaseXClient(BaseXSubmitter.java:45) at com.pilotfish.eip.basex.txlog.BaseXSubmitter.execute(BaseXSubmitter.java:111) at com.pilotfish.eip.rest.impl.TransactionLogServiceImpl.constructHealthComponentSettings(TransactionLogServiceImpl.java:726) at com.pilotfish.eip.rest.impl.TransactionLogServiceImpl.setHealthComponentConfiguration(TransactionLogServiceImpl.java:696) at com.pilotfish.eip.rest.impl.TransactionLogServiceImpl.setHealthComponentConfiguration(TransactionLogServiceImpl.java:700) at com.pilotfish.eip.rest.impl.TransactionLogServiceImpl.setHealthComponentConfiguration(TransactionLogServiceImpl.java:700) at com.pilotfish.eip.rest.impl.TransactionLogServiceImpl.getHealthComponentConfiguration(TransactionLogServiceImpl.java:607) at com.pilotfish.eip.rest.services.TransactionLogResource.getHealthComponentConfiguration(TransactionLogResource.java:247) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81) at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:151) at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:171) at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:195) at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:104) at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:353) at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:343) at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102) at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:255) at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271) at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267) at org.glassfish.jersey.internal.Errors.process(Errors.java:315) at org.glassfish.jersey.internal.Errors.process(Errors.java:297) at org.glassfish.jersey.internal.Errors.process(Errors.java:267) at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:318) at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:235) at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:983) at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:359) at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:372) at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:335) at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:218) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149) at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:336) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:926) at java.lang.Thread.run(Thread.java:745) Carl R Bondeson Systems Developer Department of Public Health Data Processing 410 Capitol Ave Hartford, CT 06134 Phone: 860-509-7434 carl.bondeson at ct.gov<mailto:carl.bondeson at ct.gov> [cid:image001.jpg at 01D02A68.0B359250]<http://www.ct.gov/dph>
CG
Christian Grünin reply to Bondeson, Carl, 7 Jan 2015, 17:167 Jan 2015 21:27 #
Hi Carl, I am sorry we cannot provide feedback for older version of BaseX, as potential error may already have been fixed. Could you please check out our latest stable snapshot [1] and report back to us if the problem persists or has been fixed? Thanks in advance, Christian [1] http://files.basex.org/releases/latest
Quoted text · Carl · 225 lines
On Wed, Jan 7, 2015 at 4:15 PM, Bondeson, Carl <Carl.Bondeson at ct.gov> wrote: > I have a multithreaded web application running under JBoss 6.2. It seems > that 2 threads are attempting access concurrently. Any suggestions. > > > > 01/07/15 10:07:14 WARN [server ]: Error creating connection to BaseX > server - attempt 0 > > java.io.IOException: Improper use? Potential bug? Your feedback is welcome: > > Contact: basex-talk at mailman.uni-konstanz.de > > Version: BaseX 7.6 > > Java: Oracle Corporation, 1.7.0_71 > > OS: Windows Server 2008 R2, amd64 > > Stack Trace: > > java.nio.channels.OverlappingFileLockException > > sun.nio.ch.SharedFileLockTable.checkList(FileLockTable.java:255) > > sun.nio.ch.SharedFileLockTable.add(FileLockTable.java:152) > > sun.nio.ch.FileChannelImpl.tryLock(FileChannelImpl.java:1056) > > org.basex.io.random.TableDiskAccess.lck(TableDiskAccess.java:183) > > org.basex.io.random.TableDiskAccess.sharedLock(TableDiskAccess.java:170) > > org.basex.io.random.TableDiskAccess.<init>(TableDiskAccess.java:83) > > org.basex.data.DiskData.init(DiskData.java:122) > > org.basex.data.DiskData.<init>(DiskData.java:92) > > org.basex.core.cmd.Open.open(Open.java:70) > > org.basex.core.cmd.Open.run(Open.java:36) > > org.basex.core.Command.run(Command.java:342) > > org.basex.core.Command.run(Command.java:117) > > org.basex.core.cmd.Check.run(Check.java:38) > > org.basex.core.Command.run(Command.java:342) > > org.basex.core.Command.exec(Command.java:321) > > org.basex.core.Command.execute(Command.java:78) > > org.basex.server.ClientListener.run(ClientListener.java:145) > > at > com.pilotfish.eip.basex.BaseXClient.execute(BaseXClient.java:79) > > at > com.pilotfish.eip.basex.BaseXClient.execute(BaseXClient.java:91) > > at > com.pilotfish.eip.basex.txlog.BaseXSubmitter.createBaseXClient(BaseXSubmitter.java:54) > > at > com.pilotfish.eip.basex.txlog.BaseXSubmitter.getBaseXClient(BaseXSubmitter.java:45) > > at > com.pilotfish.eip.basex.txlog.BaseXSubmitter.execute(BaseXSubmitter.java:111) > > at > com.pilotfish.eip.rest.impl.TransactionLogServiceImpl.constructHealthComponentSettings(TransactionLogServiceImpl.java:726) > > at > com.pilotfish.eip.rest.impl.TransactionLogServiceImpl.setHealthComponentConfiguration(TransactionLogServiceImpl.java:696) > > at > com.pilotfish.eip.rest.impl.TransactionLogServiceImpl.setHealthComponentConfiguration(TransactionLogServiceImpl.java:700) > > at > com.pilotfish.eip.rest.impl.TransactionLogServiceImpl.setHealthComponentConfiguration(TransactionLogServiceImpl.java:700) > > at > com.pilotfish.eip.rest.impl.TransactionLogServiceImpl.getHealthComponentConfiguration(TransactionLogServiceImpl.java:607) > > at > com.pilotfish.eip.rest.services.TransactionLogResource.getHealthComponentConfiguration(TransactionLogResource.java:247) > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native > Method) > > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) > > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > > at java.lang.reflect.Method.invoke(Method.java:606) > > at > org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81) > > at > org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:151) > > at > org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:171) > > at > org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:195) > > at > org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:104) > > at > org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:353) > > at > org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:343) > > at > org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102) > > at > org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:255) > > at > org.glassfish.jersey.internal.Errors$1.call(Errors.java:271) > > at > org.glassfish.jersey.internal.Errors$1.call(Errors.java:267) > > at > org.glassfish.jersey.internal.Errors.process(Errors.java:315) > > at > org.glassfish.jersey.internal.Errors.process(Errors.java:297) > > at > org.glassfish.jersey.internal.Errors.process(Errors.java:267) > > at > org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:318) > > at > org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:235) > > at > org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:983) > > at > org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:359) > > at > org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:372) > > at > org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:335) > > at > org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:218) > > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295) > > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) > > at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) > > at > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149) > > at > org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169) > > at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145) > > at > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97) > > at > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102) > > at > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:336) > > at > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856) > > at > org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653) > > at > org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:926) > > at java.lang.Thread.run(Thread.java:745) > > > > Carl R Bondeson > > Systems Developer > > Department of Public Health > > Data Processing > > 410 Capitol Ave > > Hartford, CT 06134 > > Phone: 860-509-7434 > > carl.bondeson at ct.gov > > [image: Description: DPH Logo - Keeping CT Healthy] > <http://www.ct.gov/dph> > > >

⚡Generated with XQuery