Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取锁期间超时(quartz-1.5.2)(ORA-01013用户请求取消当前操作)_Java_Oracle_Cron_Quartz Scheduler_Quartz - Fatal编程技术网

Java 获取锁期间超时(quartz-1.5.2)(ORA-01013用户请求取消当前操作)

Java 获取锁期间超时(quartz-1.5.2)(ORA-01013用户请求取消当前操作),java,oracle,cron,quartz-scheduler,quartz,Java,Oracle,Cron,Quartz Scheduler,Quartz,我们使用的是石英-1.5.2。在我们的应用程序中,在一个场景中,调度程序正在尝试删除作业 scheduler.deleteJob(jobName,groupName) 我们遇到了以下异常 org.quartz.impl.jdbcjobstore.LockException: Failure obtaining db row lock: ORA-01013: user requested cancel of current operation [See nested exception:

我们使用的是石英-1.5.2。在我们的应用程序中,在一个场景中,调度程序正在尝试删除作业

scheduler.deleteJob(jobName,groupName)

我们遇到了以下异常


org.quartz.impl.jdbcjobstore.LockException: Failure obtaining db row lock: ORA-01013: 
user requested cancel of current operation  

[See nested exception: java.sql.SQLTimeoutException: ORA-01013: user requested cancel of current operation ]
    at org.quartz.impl.jdbcjobstore.StdRowLockSemaphore.obtainLock(StdRowLockSemaphore.java:155)    
    at org.quartz.impl.jdbcjobstore.JobStoreCMT.removeJob(JobStoreCMT.java:347) 
    at org.quartz.core.QuartzScheduler.deleteJob(QuartzScheduler.java:707) 
    at org.quartz.impl.StdScheduler.deleteJob(StdScheduler.java:273)
* Nested Exception (Underlying Cause) ---------------
java.sql.SQLTimeoutException: ORA-01013: user requested cancel of current operation

    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:447)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396)
    at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:951)
    at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:513)
    at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:227)
    at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:531)
    at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:208)
    at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:886)
    at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1175)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1296)
    at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3613)
    at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3657)
    at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1495)
    at weblogic.jdbc.wrapper.PreparedStatement.executeQuery(PreparedStatement.java:135)
    at org.quartz.impl.jdbcjobstore.StdRowLockSemaphore.obtainLock(StdRowLockSemaphore.java:137)
    at org.quartz.impl.jdbcjobstore.JobStoreCMT.removeJob(JobStoreCMT.java:347)
    at org.quartz.core.QuartzScheduler.deleteJob(QuartzScheduler.java:707)
    at org.quartz.impl.StdScheduler.deleteJob(StdScheduler.java:273)
我已经调试了StdRowLockSemaphore.java获取锁方法

ps = conn.prepareStatement(selectWithLockSQL);
ps.setString(1, lockName);
if(log.isDebugEnabled())
    log.debug( "Lock '" + lockName + "' is being obtained: " + Thread.currentThread().getName());
rs = ps.executeQuery();
ps.executeQuery()中出现超时

它正在尝试运行一个简单的查询

SELECT * FROM QRTZ_LOCKS WHERE LOCK_NAME = 'TRIGGER_ACCESS' FOR UPDATE;
这不是一直都会发生的,当服务器启动时,它运行没有任何问题,几个小时后我们就遇到了这个问题

请查找石英的属性

<prop key="org.quartz.scheduler.instanceName">CargoresScheduler_${cargores_server_type}</prop>
            <prop key="org.quartz.scheduler.instanceId">AUTO</prop>
            <prop key="org.quartz.threadPool.class">org.quartz.simpl.SimpleThreadPool</prop>
            <prop key="org.quartz.threadPool.threadCount">10</prop>
            <prop key="org.quartz.threadPool.threadPriority">5</prop>
            <prop key="org.quartz.jobStore.misfireThreshold">60000</prop>

当quartz遇到此错误时,您是否可以尝试手动运行查询“SELECT*FROM QRTZ_LOCKS WHERE LOCK_NAME='TRIGGER_ACCESS'FOR UPDATE;”以查看发生了什么情况?基本上确定您有这样一个表,并且有一个具有lock\u name trigger\u access的条目。好的,我将尝试该选项srinivas我们无法访问该表,设置了某种行锁。我已经用线程转储更新了这个问题。因为它正在等待执行查询,所以从{0}锁中选择*FROM{0}锁,其中LOCK_NAME=?对于更新,我已使用SELECT*从{0}锁重写属性org.quartz.jobStore.selectWithLockSQL,其中LOCK_NAME=?对于更新等待5,现在没有超时
"apps_QuartzSchedulerThread" id=60 idx=0x104 tid=21586 prio=5 alive, in native

            at jrockit/net/SocketNativeIO.readBytesPinned(Ljava/io/FileDescriptor;[BIII)I(Native Method)

            at jrockit/net/SocketNativeIO.socketRead(SocketNativeIO.java:32)

            at java/net/SocketInputStream.socketRead0(Ljava/io/FileDescriptor;[BIII)I(SocketInputStream.java)

            at java/net/SocketInputStream.read(SocketInputStream.java:129)

            at oracle/net/ns/Packet.receive(Packet.java:308)

            at oracle/net/ns/DataPacket.receive(DataPacket.java:106)

            at oracle/net/ns/NetInputStream.getNextPacket(NetInputStream.java:324)

            at oracle/net/ns/NetInputStream.read(NetInputStream.java:268)

            at oracle/net/ns/NetInputStream.read(NetInputStream.java:190)

            at oracle/net/ns/NetInputStream.read(NetInputStream.java:107)

            at oracle/jdbc/driver/T4CSocketInputStreamWrapper.readNextPacket(T4CSocketInputStreamWrapper.java:124)

            at oracle/jdbc/driver/T4CSocketInputStreamWrapper.read(T4CSocketInputStreamWrapper.java:80)

            at oracle/jdbc/driver/T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1137)[inlined]

            at oracle/jdbc/driver/T4CTTIfun.receive(T4CTTIfun.java:350)[optimized]

            at oracle/jdbc/driver/T4CTTIfun.doRPC(T4CTTIfun.java:227)

            at oracle/jdbc/driver/T4C8Oall.doOALL(T4C8Oall.java:531)[inlined]

            at oracle/jdbc/driver/T4CPreparedStatement.doOall8(T4CPreparedStatement.java:208)[optimized]

            at oracle/jdbc/driver/T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:1046)

            at oracle/jdbc/driver/OracleStatement.executeMaybeDescribe(OracleStatement.java:1207)

            at oracle/jdbc/driver/OracleStatement.doExecuteWithTimeout(OracleStatement.java:1296)

            at oracle/jdbc/driver/OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3613)

            at oracle/jdbc/driver/OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3657)

            ^-- Holding lock: oracle/jdbc/driver/T4CConnection@0x180655aa0[thin lock]

            at oracle/jdbc/driver/OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1495)

            at weblogic/jdbc/wrapper/PreparedStatement.executeQuery(PreparedStatement.java:135)

            at org/quartz/impl/jdbcjobstore/StdRowLockSemaphore.obtainLock(StdRowLockSemaphore.java:137)

            at org/quartz/impl/jdbcjobstore/JobStoreCMT.acquireNextTrigger(JobStoreCMT.java:1173)

            at org/quartz/core/QuartzSchedulerThread.run(QuartzSchedulerThread.java:233)

            at jrockit/vm/RNI.c2java(JJJJJ)V(Native Method)

            -- end of trace

        "Timer-2" id=61 idx=0x108 tid=21587 prio=5 alive, waiting, native_blocked, daemon

            -- Waiting for notification on: java/util/TaskQueue@0x1e7db6800[fat lock]

            at jrockit/vm/Threads.waitForNotifySignal(JLjava/lang/Object;)Z(Native Method)

            at java/lang/Object.wait(J)V(Native Method)

            at java/lang/Object.wait(Object.java:485)

            at java/util/TimerThread.mainLoop(Timer.java:483)

            ^-- Lock released while waiting: java/util/TaskQueue@0x1e7db6800[fat lock]

            at java/util/TimerThread.run(Timer.java:462)

            at jrockit/vm/RNI.c2java(JJJJJ)V(Native Method)

            -- end of trace

        "apps-NON_CLUSTERED_MisfireHandler" id=62 idx=0x10c tid=21588 prio=5 alive, in native, daemon

            at jrockit/net/SocketNativeIO.readBytesPinned(Ljava/io/FileDescriptor;[BIII)I(Native Method)

            at jrockit/net/SocketNativeIO.socketRead(SocketNativeIO.java:32)

            at java/net/SocketInputStream.socketRead0(Ljava/io/FileDescriptor;[BIII)I(SocketInputStream.java)

            at java/net/SocketInputStream.read(SocketInputStream.java:129)

            at oracle/net/ns/Packet.receive(Packet.java:308)

            at oracle/net/ns/DataPacket.receive(DataPacket.java:106)

            at oracle/net/ns/NetInputStream.getNextPacket(NetInputStream.java:324)

            at oracle/net/ns/NetInputStream.read(NetInputStream.java:268)

            at oracle/net/ns/NetInputStream.read(NetInputStream.java:190)

            at oracle/net/ns/NetInputStream.read(NetInputStream.java:107)

            at oracle/jdbc/driver/T4CSocketInputStreamWrapper.readNextPacket(T4CSocketInputStreamWrapper.java:124)

            at oracle/jdbc/driver/T4CSocketInputStreamWrapper.read(T4CSocketInputStreamWrapper.java:80)

            at oracle/jdbc/driver/T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1137)[inlined]

            at oracle/jdbc/driver/T4CTTIfun.receive(T4CTTIfun.java:350)[optimized]

            at oracle/jdbc/driver/T4CTTIfun.doRPC(T4CTTIfun.java:227)

            at oracle/jdbc/driver/T4C8Oall.doOALL(T4C8Oall.java:531)[inlined]

            at oracle/jdbc/driver/T4CPreparedStatement.doOall8(T4CPreparedStatement.java:208)[optimized]

            at oracle/jdbc/driver/T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:886)

            at oracle/jdbc/driver/OracleStatement.executeMaybeDescribe(OracleStatement.java:1175)

            at oracle/jdbc/driver/OracleStatement.doExecuteWithTimeout(OracleStatement.java:1296)

            at oracle/jdbc/driver/OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3613)

            at oracle/jdbc/driver/OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3657)

            ^-- Holding lock: oracle/jdbc/driver/T4CConnection@0x1809d4df8[thin lock]

            at oracle/jdbc/driver/OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1495)

            at weblogic/jdbc/wrapper/PreparedStatement.executeQuery(PreparedStatement.java:135)

            at org/quartz/impl/jdbcjobstore/StdRowLockSemaphore.obtainLock(StdRowLockSemaphore.java:137)

            at org/quartz/impl/jdbcjobstore/JobStoreCMT.doRecoverMisfires(JobStoreCMT.java:1337)

            at org/quartz/impl/jdbcjobstore/JobStoreSupport$MisfireHandler.manage(JobStoreSupport.java:2449)

            at org/quartz/impl/jdbcjobstore/JobStoreSupport$MisfireHandler.run(JobStoreSupport.java:2468)

            at jrockit/vm/RNI.c2java(JJJJJ)V(Native Method)

            -- end of trace