[ 
https://issues.apache.org/jira/browse/DERBY-7079?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17126250#comment-17126250
 ] 

Richard N. Hillegas commented on DERBY-7079:
--------------------------------------------

>From the stack trace, it looks as though you are failing to get the lock 
>needed to allocate the next value of an autogenerated column. See DERBY-6975. 
>To increase the concurrency of your application, try increasing the value of 
>derby.language.sequence.preallocator. See 
>http://db.apache.org/derby/docs/10.15/ref/rrefproperpreallocator.html Let us 
>know if this helps.

> Getting 'ERROR 40XL1: A lock could not be obtained within the time requested' 
> immediately, no 60 seconds lock time out
> ----------------------------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-7079
>                 URL: https://issues.apache.org/jira/browse/DERBY-7079
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.15.1.3
>            Reporter: Martin Hajduch
>            Priority: Major
>
> Our application uses embedded Derby 10.15.1.3.
> Rarely, we are getting 'ERROR 40XL1: A lock could not be obtained within the 
> time requested'.
> We of course read: 
> [http://db.apache.org/derby/docs/10.8/devguide/cdevconcepts28436.html]
> According to the documentation, default value of '_derby.locks.waitTimeout_' 
> is 60 seconds. We have not changed this value. Our understanding is, that if 
> a transaction cannot obtain required lock within 60 seconds, it should time 
> out.
>  
> Now, this is the exception our server application is getting:
>  
> 2020-05-14 13:56:21,295 ERROR null 
> assyst.datarepository.session.AbstractSession.messageReceived(?:?) - 
> Session[13, de40b97b-109c-4c14-bd38-f8ca3463026d, CAX 
> Explorer-W7-DE-CRRNTRLS, /127.0.0.1:49193]: error processing message 
> cadcam.attr.OverwriteBinaryData
> assyst.datarepository.interfaces.b.d: 
> assyst.datarepository.jdbc.PreparedStmt$SqlEx: failed executeUpdate() on 
> insert into assyst.TESTDP_STP_m (version, modified_ms, last_modified, 
> itm_name, name_upr, BBI, BLI, BRI, BTI, DES, DES_U, ESS, FLP, FLD, GAP, GIX, 
> HPD, HPTT, IDX, MYF, NAP, OPC, GAT, PCE, PCE_U, PPL, PPF, PPX, PPY, ROP, RUF, 
> XST, YST, STY, STY_U, TLT, UFC) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 
> ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) 
> with params [1, 1589457381232, 2020-05-14 13:56:21.232, 
> 7c525a9e-dcdd-46a9-a43e-6c717a839e52, 7C525A9E-DCDD-46A9-A43E-6C717A839E52, 
> 0, 0, 0, 0, AY-GS-BLAZER, AY-GS-BLAZER, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 1, 0, 
> AY-BLAZER-RTO-E, AY-BLAZER-RTO-E, 0, 1, 9186088, -3725635, 0.0, 0.0, 0.0, 
> 0.0, AY-GS-BLAZER-E, AY-GS-BLAZER-E, 0.0, 1]
>  at assyst.datarepository.jdbc.TaskExecutor.b(Unknown Source)
>  at assyst.datarepository.jdbc.TaskExecutor.execute(Unknown Source)
>  at assyst.datarepository.jdbc.JdbcRepository.execute(Unknown Source)
>  at assyst.datarepository.jdbc.JdbcRepository.saveBinaryData(Unknown Source)
>  at jdk.internal.reflect.GeneratedMethodAccessor101.invoke(Unknown Source)
>  at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>  at java.base/java.lang.reflect.Method.invoke(Method.java:566)
>  at assyst.cfg.InvocationHandlerImpl.invokeImpl(Unknown Source)
>  at assyst.cfg.LoggingInvocationHandler.b(Unknown Source)
>  at assyst.datarepository.server.ILInvocationHandler.invokeImpl(Unknown 
> Source)
>  at assyst.cfg.InvocationHandlerImpl.invoke(Unknown Source)
>  at com.sun.proxy.$Proxy5.saveBinaryData(Unknown Source)
>  at 
> assyst.datarepository.validating.ValidatingRepository.saveBinaryData(Unknown 
> Source)
>  at jdk.internal.reflect.GeneratedMethodAccessor101.invoke(Unknown Source)
>  at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>  at java.base/java.lang.reflect.Method.invoke(Method.java:566)
>  at assyst.cfg.InvocationHandlerImpl.invokeImpl(Unknown Source)
>  at assyst.cfg.LoggingInvocationHandler.b(Unknown Source)
>  at assyst.datarepository.server.ILInvocationHandler.invokeImpl(Unknown 
> Source)
>  at assyst.cfg.InvocationHandlerImpl.invoke(Unknown Source)
>  at com.sun.proxy.$Proxy3.saveBinaryData(Unknown Source)
>  at 
> assyst.datarepository.blobparser.BlobParserRepositoryBD.saveBinaryData(Unknown
>  Source)
>  at jdk.internal.reflect.GeneratedMethodAccessor101.invoke(Unknown Source)
>  at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>  at java.base/java.lang.reflect.Method.invoke(Method.java:566)
>  at assyst.cfg.InvocationHandlerImpl.invokeImpl(Unknown Source)
>  at assyst.cfg.LoggingInvocationHandler.b(Unknown Source)
>  at assyst.datarepository.server.ILInvocationHandler.invokeImpl(Unknown 
> Source)
>  at assyst.cfg.InvocationHandlerImpl.invoke(Unknown Source)
>  at com.sun.proxy.$Proxy5.saveBinaryData(Unknown Source)
>  at 
> assyst.datarepository.virtual.VirtualDataRepository.saveBinaryData(Unknown 
> Source)
>  at jdk.internal.reflect.GeneratedMethodAccessor101.invoke(Unknown Source)
>  at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>  at java.base/java.lang.reflect.Method.invoke(Method.java:566)
>  at assyst.cfg.InvocationHandlerImpl.invokeImpl(Unknown Source)
>  at assyst.cfg.LoggingInvocationHandler.b(Unknown Source)
>  at assyst.datarepository.server.ILInvocationHandler.invokeImpl(Unknown 
> Source)
>  at assyst.cfg.InvocationHandlerImpl.invoke(Unknown Source)
>  at com.sun.proxy.$Proxy5.saveBinaryData(Unknown Source)
>  at 
> assyst.datarepository.virtual.HistoryLoggingRepository.saveBinaryData(Unknown 
> Source)
>  at jdk.internal.reflect.GeneratedMethodAccessor101.invoke(Unknown Source)
>  at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>  at java.base/java.lang.reflect.Method.invoke(Method.java:566)
>  at assyst.cfg.InvocationHandlerImpl.invokeImpl(Unknown Source)
>  at assyst.cfg.LoggingInvocationHandler.b(Unknown Source)
>  at assyst.datarepository.server.ILInvocationHandler.invokeImpl(Unknown 
> Source)
>  at assyst.cfg.InvocationHandlerImpl.invoke(Unknown Source)
>  at com.sun.proxy.$Proxy5.saveBinaryData(Unknown Source)
>  at 
> assyst.datarepository.virtual.VirtualDataRepository.saveBinaryData(Unknown 
> Source)
>  at jdk.internal.reflect.GeneratedMethodAccessor101.invoke(Unknown Source)
>  at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>  at java.base/java.lang.reflect.Method.invoke(Method.java:566)
>  at assyst.cfg.InvocationHandlerImpl.invokeImpl(Unknown Source)
>  at assyst.cfg.LoggingInvocationHandler.b(Unknown Source)
>  at assyst.datarepository.server.ILInvocationHandler.invokeImpl(Unknown 
> Source)
>  at assyst.cfg.InvocationHandlerImpl.invoke(Unknown Source)
>  at com.sun.proxy.$Proxy5.saveBinaryData(Unknown Source)
>  at assyst.datarepository.handler.attr.AttrUtils.saveBinaryData(Unknown 
> Source)
>  at 
> assyst.datarepository.handler.cadcam.attr.SaveBinaryData.saveBinaryDataS(Unknown
>  Source)
>  at 
> assyst.datarepository.handler.cadcam.attr.SaveBinaryData.saveBinaryDataS(Unknown
>  Source)
>  at assyst.datarepository.handler.cadcam.attr.SaveBinaryData.b(Unknown Source)
>  at assyst.datarepository.handler.SaveBinaryData.handleMessageImpl(Unknown 
> Source)
>  at assyst.datarepository.handler.SaveBinaryData.handleMessageImpl(Unknown 
> Source)
>  at 
> assyst.datarepository.handler.SimpleMessageHandlerImpl.handleMessage(Unknown 
> Source)
>  at assyst.datarepository.session.ForwardingSessionImpl.b(Unknown Source)
>  at assyst.datarepository.session.AbstractSession.messageReceived(Unknown 
> Source)
>  at assyst.datarepository.server.BinaryConnectionHandler.run(Unknown Source)
>  at assyst.datarepository.server.ConnectionTypeDispatcher.run(Unknown Source)
>  at assyst.datarepository.server.ConnectionTypeDispatcher.run(Unknown Source)
>  at java.base/java.lang.Thread.run(Thread.java:834)
> Caused by: assyst.datarepository.jdbc.PreparedStmt$SqlEx: failed 
> executeUpdate() on insert into assyst.TESTDP_STP_m (version, modified_ms, 
> last_modified, itm_name, name_upr, BBI, BLI, BRI, BTI, DES, DES_U, ESS, FLP, 
> FLD, GAP, GIX, HPD, HPTT, IDX, MYF, NAP, OPC, GAT, PCE, PCE_U, PPL, PPF, PPX, 
> PPY, ROP, RUF, XST, YST, STY, STY_U, TLT, UFC) values (?, ?, ?, ?, ?, ?, ?, 
> ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 
> ?, ?, ?, ?) with params [1, 1589457381232, 2020-05-14 13:56:21.232, 
> 7c525a9e-dcdd-46a9-a43e-6c717a839e52, 7C525A9E-DCDD-46A9-A43E-6C717A839E52, 
> 0, 0, 0, 0, AY-GS-BLAZER, AY-GS-BLAZER, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 1, 0, 
> AY-BLAZER-RTO-E, AY-BLAZER-RTO-E, 0, 1, 9186088, -3725635, 0.0, 0.0, 0.0, 
> 0.0, AY-GS-BLAZER-E, AY-GS-BLAZER-E, 0.0, 1]
>  at assyst.datarepository.jdbc.PreparedStmt.executeUpdate(Unknown Source)
>  at assyst.datarepository.jdbc.d.m.b(Unknown Source)
>  at assyst.datarepository.jdbc.d.c.execute(Unknown Source)
>  ... 70 more
> *Caused by: java.sql.SQLTransactionRollbackException: A lock could not be 
> obtained within the time requested*
>  *at 
> org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:100)*
>  *at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Util.java:230)*
>  *at 
> org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(TransactionResourceImpl.java:431)*
>  *at 
> org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(TransactionResourceImpl.java:360)*
>  *at 
> org.apache.derby.impl.jdbc.EmbedConnection.handleException(EmbedConnection.java:2405)*
>  *at 
> org.apache.derby.impl.jdbc.ConnectionChild.handleException(ConnectionChild.java:88)*
>  *at 
> org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1436)*
>  *at 
> org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(EmbedPreparedStatement.java:1709)*
>  *at 
> org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeLargeUpdate(EmbedPreparedStatement.java:320)*
>  *at 
> org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(EmbedPreparedStatement.java:309)*
>  *... 73 more*
> *Caused by: ERROR 40XL1: A lock could not be obtained within the time 
> requested*
>  *at 
> org.apache.derby.shared.common.error.StandardException.newException(StandardException.java:300)*
>  *at 
> org.apache.derby.shared.common.error.StandardException.newException(StandardException.java:295)*
>  *at 
> org.apache.derby.impl.sql.catalog.SequenceUpdater.tooMuchContentionException(SequenceUpdater.java:188)*
>  *at 
> org.apache.derby.impl.sql.catalog.SequenceUpdater.getCurrentValueAndAdvance(SequenceUpdater.java:430)*
>  *at 
> org.apache.derby.impl.sql.catalog.DataDictionaryImpl.getCurrentValueAndAdvance(DataDictionaryImpl.java:10323)*
>  *at 
> org.apache.derby.impl.sql.execute.BaseActivation.getCurrentValueAndAdvance(BaseActivation.java:765)*
>  *at 
> org.apache.derby.impl.sql.execute.InsertResultSet.getSetAutoincrementValue(InsertResultSet.java:574)*
>  *at 
> org.apache.derby.impl.sql.execute.BaseActivation.getSetAutoincrementValue(BaseActivation.java:744)*
>  *at org.apache.derby.exe.acdf51ae7dx0172x1305x8049x000003b3ea30c.e0(Unknown 
> Source)*
>  *at 
> org.apache.derby.impl.services.reflect.DirectCall.invoke(ReflectGeneratedClass.java:101)*
>  *at 
> org.apache.derby.impl.sql.execute.RowResultSet.getNextRowCore(RowResultSet.java:150)*
>  *at 
> org.apache.derby.impl.sql.execute.NormalizeResultSet.getNextRowCore(NormalizeResultSet.java:188)*
>  *at 
> org.apache.derby.impl.sql.execute.DMLWriteResultSet.getNextRowCore(DMLWriteResultSet.java:148)*
>  *at 
> org.apache.derby.impl.sql.execute.InsertResultSet.getNextRowCore(InsertResultSet.java:1082)*
>  *at 
> org.apache.derby.impl.sql.execute.InsertResultSet.open(InsertResultSet.java:451)*
>  *at 
> org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(GenericPreparedStatement.java:472)*
>  *at 
> org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:351)*
>  *at 
> org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1344)*
>  *... 76 more*
>  
>  
> This operation on the server side is triggered by a client application, 
> sending specific request to our server.
> From our other logs, we can see that a series of similar operations 
> _(creation of 'data items', rows in a table, with different values)_, started 
> at 2020-05-14 13:56:20,662. Nine of these operations went through. Tenth 
> failed with the above error. Timestamp of this tenth operation is 2020-05-14 
> 13:56:21,295. Both applications _(client & server)_ run on the same computer. 
> I.e. the failure comes less then 2 seconds after the INSERT statement has 
> been executed.
> These operations are executed sequentially. Nine INSERTs go through, tenth 
> fails. There is almost no other load on the database during that time either.
> Is there anything we could do to generate more useful debug output, showing 
> why the failure happens instantly, instead of waiting 60 seconds for the lock?
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to