[
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)