Uploaded image for project: 'JBeret'
  1. JBeret
  2. JBERET-171

Too long identifiers in Oracle DDL for JDBC repository

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major Major
    • 1.2.0.Alpha1
    • 1.1.0.Final
    • jberet-core
    • None

      Oracle databases have a hard limit on identifier length - 30 bytes. JBeret's DDL file for Oracle contains two identifiers which break this: constraints FK_PARTITION_EXECUTION_STEP_EXECUTION and FK_STEP_EXECUTION_JOB_EXECUTION. This means that Batch applications can't deploy if a JDBC storage if an Oracle database is used. The stack trace from WildFly:

      12:27:39,379 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-8) MSC000001: Failed to start service jboss.deployment.unit."ejb-batchlet.war".POST_MODULE: org.jboss.msc.service.StartException in service jboss.deployment.unit."ejb-batchlet.war".POST_MODULE: WFLYSRV0153: Failed to process phase POST_MODULE of deployment "ejb-batchlet.war"
      	at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:163)
      	at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948)
      	at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881)
      	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:745)
      Caused by: javax.batch.operations.BatchRuntimeException: JBERET000624: Failed to create tables for batch job repository database product name Oracle with DDL sql/jberet-oracle.ddl
      	at org.jberet.repository.JdbcRepository.createTables(JdbcRepository.java:231)
      	at org.jberet.repository.JdbcRepository.<init>(JdbcRepository.java:180)
      	at org.jberet.repository.JdbcRepository.create(JdbcRepository.java:109)
      	at org.wildfly.extension.batch.job.repository.JobRepositoryFactory.getJobRepository(JobRepositoryFactory.java:63)
      	at org.wildfly.extension.batch.deployment.BatchEnvironmentProcessor.deploy(BatchEnvironmentProcessor.java:81)
      	at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:156)
      	... 5 more
      Caused by: java.sql.BatchUpdateException: error occurred during batching: ORA-00972: identifier is too long
      
      	at oracle.jdbc.driver.OracleStatement.executeBatch(OracleStatement.java:5031)
      	at oracle.jdbc.driver.OracleStatementWrapper.executeBatch(OracleStatementWrapper.java:246)
      	at org.jboss.jca.adapters.jdbc.WrappedStatement.executeBatch(WrappedStatement.java:1077)
      	at org.jberet.repository.JdbcRepository.createTables(JdbcRepository.java:229)
      	... 10 more
      
      12:27:39,382 ERROR [org.jboss.as.controller.management-operation] (management-handler-thread - 4) WFLYCTL0013: Operation ("deploy") failed - address: ([("deployment" => "ejb-batchlet.war")]) - failure description: {"WFLYCTL0080: Failed services" => {"jboss.deployment.unit.\"ejb-batchlet.war\".POST_MODULE" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"ejb-batchlet.war\".POST_MODULE: WFLYSRV0153: Failed to process phase POST_MODULE of deployment \"ejb-batchlet.war\"
          Caused by: javax.batch.operations.BatchRuntimeException: JBERET000624: Failed to create tables for batch job repository database product name Oracle with DDL sql/jberet-oracle.ddl
          Caused by: java.sql.BatchUpdateException: error occurred during batching: ORA-00972: identifier is too long
      "}}
      12:27:39,383 ERROR [org.jboss.as.server] (management-handler-thread - 4) WFLYSRV0021: Deploy of deployment "ejb-batchlet.war" was rolled back with the following failure message: 
      {"WFLYCTL0080: Failed services" => {"jboss.deployment.unit.\"ejb-batchlet.war\".POST_MODULE" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"ejb-batchlet.war\".POST_MODULE: WFLYSRV0153: Failed to process phase POST_MODULE of deployment \"ejb-batchlet.war\"
          Caused by: javax.batch.operations.BatchRuntimeException: JBERET000624: Failed to create tables for batch job repository database product name Oracle with DDL sql/jberet-oracle.ddl
          Caused by: java.sql.BatchUpdateException: error occurred during batching: ORA-00972: identifier is too long
      "}}
      12:27:39,389 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-3) WFLYSRV0028: Stopped deployment ejb-batchlet.war (runtime-name: ejb-batchlet.war) in 5ms
      

              cfang@redhat.com Cheng Fang
              jmartisk@redhat.com Jan Martiska
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: