[jboss-jira] [JBoss JIRA] (WFLY-9054) Use of schedule expression start/end date for (Database) persistent calendar timers fail if the server is restarted and the timer reloaded
Wolf-Dieter Fink (JIRA)
issues at jboss.org
Thu Jul 6 12:02:00 EDT 2017
[ https://issues.jboss.org/browse/WFLY-9054?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Wolf-Dieter Fink reassigned WFLY-9054:
--------------------------------------
Assignee: Wolf-Dieter Fink
> Use of schedule expression start/end date for (Database) persistent calendar timers fail if the server is restarted and the timer reloaded
> ------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: WFLY-9054
> URL: https://issues.jboss.org/browse/WFLY-9054
> Project: WildFly
> Issue Type: Bug
> Components: EJB
> Affects Versions: 11.0.0.Alpha1
> Environment: Oracle Database as datasource for timers
> <timer-service thread-pool-name="default" default-data-store="default-store">
> <data-stores>
> <database-data-store name="default-store" datasource-jndi-name="jboss/datasources/OracleDatasource"/>
> </data-stores>
> </timer-service>
> Reporter: Wolf-Dieter Fink
> Assignee: Wolf-Dieter Fink
> Labels: ejb, timers, timerservice
>
> If Calendar timers are created programatically it is possible to use the javax.ejb.ScheduleExpression and set start() end() as a Date.
> If the timer is persistent and the database is Oracle (here 12c ojdbc7 driver) a server restart will show the following Exception is:
> 13:55:00,450 WARN [org.jboss.as.ejb3.timer] (ServerService Thread Pool -- 63) WFLYEJB0161: Failed to reinstate timer 'ejb31-timer.ejb31-timer.SimpleScheduleSingletonTimerBean' (id=bd2e59a0-bdf6-43a1-9241-fd3a0b3a72da) from its persistent state: java.sql.SQLException: Invalid conversion requested
> at oracle.jdbc.driver.CharCommonAccessor.getTimestamp(CharCommonAccessor.java:420)
> at oracle.jdbc.driver.T4CVarcharAccessor.getTimestamp(T4CVarcharAccessor.java:644)
> at oracle.jdbc.driver.GeneratedStatement.getTimestamp(GeneratedStatement.java:360)
> at oracle.jdbc.driver.GeneratedScrollableResultSet.getTimestamp(GeneratedScrollableResultSet.java:1008)
> at org.jboss.jca.adapters.jdbc.WrappedResultSet.getTimestamp(WrappedResultSet.java:2140)
> at org.jboss.as.ejb3.timerservice.persistence.database.DatabaseTimerPersistence.timerFromResult(DatabaseTimerPersistence.java:535)
> at org.jboss.as.ejb3.timerservice.persistence.database.DatabaseTimerPersistence.loadActiveTimers(DatabaseTimerPersistence.java:452)
> at org.jboss.as.ejb3.timerservice.TimerServiceImpl.getActivePersistentTimers(TimerServiceImpl.java:953)
> at org.jboss.as.ejb3.timerservice.TimerServiceImpl.restoreTimers(TimerServiceImpl.java:693)
> at org.jboss.as.ejb3.timerservice.TimerServiceImpl.activate(TimerServiceImpl.java:225)
> at org.jboss.as.ejb3.component.EJBComponent.start(EJBComponent.java:588)
> at org.jboss.as.ejb3.component.singleton.SingletonComponent.start(SingletonComponent.java:133)
> at org.jboss.as.ee.component.ComponentStartService$1.run(ComponentStartService.java:54)
> at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
> at java.util.concurrent.FutureTask.run(FutureTask.java:266)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
> at java.lang.Thread.run(Thread.java:748)
> at org.jboss.threads.JBossThread.run(JBossThread.java:320)
> Caused by: java.lang.IllegalArgumentException: Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffffff]
> at java.sql.Timestamp.valueOf(Timestamp.java:237)
> at oracle.jdbc.driver.CharCommonAccessor.getTimestamp(CharCommonAccessor.java:415)
> ... 18 more
> As a result the timer seems created with a new id and the entry within the timer-table is duplicated.
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)
More information about the jboss-jira
mailing list