ODE
  1. ODE
  2. ODE-831

value too long for type character varying(255)

    Details

    • Type: Bug Bug
    • Status: Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: 1.3.5
    • Fix Version/s: 1.4
    • Component/s: BPEL Runtime
    • Labels:
      None

      Description

      Caused by: <openjpa-1.3.0-SNAPSHOT-r422266:938588 nonfatal general error> org.apache.openjpa.persistence.PersistenceException: ERROR: value too long for type character varying(255) {prepstmnt 1445067100 INSERT INTO ODE_MESSAGE_EXCHANGE (MESSAGE_EXCHANGE_ID, ACK_TYPE, CALLEE, CHANNEL, CORRELATION_ID, CORRELATION_KEYS, CORRELATION_STATUS, CREATE_TIME, DIRECTION, EPR, FAILURE_TYPE, FAULT, FAULT_EXPLANATION, INST_RES, ISTYLE, OPERATION, PARTNER_LINK_MODEL_ID, PATTERN, PIPED_ID, PIPED_PID, PORT_TYPE, PROPAGATE_TRANS, RESOURCE, STATUS, TIMEOUT, CORRELATOR, PLINK, PROCESS, INSTANCE, REQUEST, RESPONSE) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) [params=(String) hqejbhcnphr5asgqkdgdr4, (String) FAILURE, (String)

      {urn:xml-gov-au:edais:ncp:UA-BTV1000R:2.3.0r2}

      TestCase_UA-BTV1000R_S..., (null) null, (null) null, (null) null, (null) null, (Timestamp) 2010-05-24 11:24:48.46, (int) 77, (null) null, (String) FORMAT_ERROR, (null) null, (String) Unable to evaluate apply property alias "

      {urn:xml-gov-au:edais:ncp:U..., (boolean) false, (String) UNRELIABLE, (String) process, (int) 26, (String) REQUEST_RESPONSE, (null) null, (null) null, (null) null, (boolean) false, (null) null, (String) ACK, (long) 900000, (null) null, (null) null, (long) 1554, (null) null, (long) 2068, (null) null]}

      [code=0, state=22001]
      FailedObject: org.apache.ode.dao.jpa.MessageExchangeDAOImpl@6bdcccbf
      at org.apache.openjpa.jdbc.sql.DBDictionary.narrow(DBDictionary.java:4360)
      at org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:4325)
      at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:102)
      at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:72)
      at org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flushAndUpdate(PreparedStatementManagerImpl.java:127)
      at org.apache.openjpa.jdbc.kernel.BatchingPreparedStatementManagerImpl.flushAndUpdate(BatchingPreparedStatementManagerImpl.java:81)
      at org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flushInternal(PreparedStatementManagerImpl.java:93)
      at org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flush(PreparedStatementManagerImpl.java:81)
      at org.apache.openjpa.jdbc.kernel.ConstraintUpdateManager.flush(ConstraintUpdateManager.java:549)
      at org.apache.openjpa.jdbc.kernel.ConstraintUpdateManager.flush(ConstraintUpdateManager.java:106)
      at org.apache.openjpa.jdbc.kernel.BatchingConstraintUpdateManager.flush(BatchingConstraintUpdateManager.java:59)
      at org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:89)
      at org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:72)
      at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.flush(JDBCStoreManager.java:723)
      at org.apache.openjpa.kernel.DelegatingStoreManager.flush(DelegatingStoreManager.java:130)
      ... 16 more

        Activity

        Hide
        René Bos added a comment -

        Hi Tammo,

        I forget to mention that I indeed tried that fix. At least, a part of it. I changed the column size of fault_explanation from 255 to unlimited (character varying in PostgreSQL). That worked, the fault is catched and ignored in my case.

        I changed it to unlimited because I believe the size of 4096 is specified nowhere but is a somewhat guessed value. The fault may come from ODE itself in case of a fault thrown from a failure or from a external webservice throwing a fault. Especially the last one is not guaranteed to be 4096 characters or less.

        René

        Show
        René Bos added a comment - Hi Tammo, I forget to mention that I indeed tried that fix. At least, a part of it. I changed the column size of fault_explanation from 255 to unlimited (character varying in PostgreSQL). That worked, the fault is catched and ignored in my case. I changed it to unlimited because I believe the size of 4096 is specified nowhere but is a somewhat guessed value. The fault may come from ODE itself in case of a fault thrown from a failure or from a external webservice throwing a fault. Especially the last one is not guaranteed to be 4096 characters or less. René
        Hide
        Tammo van Lessen added a comment -

        Hi René,

        thanks for the bump. Did you try Terry's fix? Does this work as expected?

        Thanks,
        Tammo

        Show
        Tammo van Lessen added a comment - Hi René, thanks for the bump. Did you try Terry's fix? Does this work as expected? Thanks, Tammo
        Tammo van Lessen made changes -
        Fix Version/s 1.4 [ 12315144 ]
        Affects Version/s 1.3.5 [ 12314243 ]
        Affects Version/s 2.0-beta2 [ 12314447 ]
        René Bos made changes -
        Attachment FailingInvokeWithFaultOnFailure.log [ 12496456 ]
        Hide
        René Bos added a comment -

        The logfile of the failure above. Happens when the invoke timed out.

        Show
        René Bos added a comment - The logfile of the failure above. Happens when the invoke timed out.
        René Bos made changes -
        Comment [ The logfile of the failure above. Happens when the invoke timed out. ]
        René Bos made changes -
        Field Original Value New Value
        Attachment FailingInvokeWithFaultOnFailure.log [ 12496455 ]
        Hide
        René Bos added a comment -

        I was wondering why this issue is still pending. It gives serious issues when invoking a external webservice fails when using faultOnFailure=true!

        The process will become in an undefined state if the webservice call fails and the fault message was too long (more than 255 characters).

        Example process snippet (I want to totaly ignore mail sending errors):

        <!-- Invoke the email webservice -->
        <invoke inputVariable="webserviceCallInput_Bevestiging_aanvraag" operation="sendEmailBestelling" outputVariable="webserviceCallOutput_Bevestiging_aanvraag" partnerLink="NtierMailServiceLink" portType="NtierMailService:NtierMailServicePortType">

        <ext:failureHandling xmlns:ext="http://ode.apache.org/activityRecovery">
        <ext:faultOnFailure>true</ext:faultOnFailure>
        </ext:failureHandling>

        <catchAll>
        <empty/>
        </catchAll>
        </invoke>

        I have this problem in Ode 1.3.2 but in the package from Ode 1.3.5 I still see the 255 character column. Can someone please change the affected version? A major bug in the 1.3.x branch is more important than one in the (unreleased) 2.x branch)

        Regards, René

        Show
        René Bos added a comment - I was wondering why this issue is still pending. It gives serious issues when invoking a external webservice fails when using faultOnFailure=true! The process will become in an undefined state if the webservice call fails and the fault message was too long (more than 255 characters). Example process snippet (I want to totaly ignore mail sending errors): <!-- Invoke the email webservice --> <invoke inputVariable="webserviceCallInput_Bevestiging_aanvraag" operation="sendEmailBestelling" outputVariable="webserviceCallOutput_Bevestiging_aanvraag" partnerLink="NtierMailServiceLink" portType="NtierMailService:NtierMailServicePortType"> <ext:failureHandling xmlns:ext="http://ode.apache.org/activityRecovery"> <ext:faultOnFailure>true</ext:faultOnFailure> </ext:failureHandling> <catchAll> <empty/> </catchAll> </invoke> I have this problem in Ode 1.3.2 but in the package from Ode 1.3.5 I still see the 255 character column. Can someone please change the affected version? A major bug in the 1.3.x branch is more important than one in the (unreleased) 2.x branch) Regards, René
        Hide
        Terry Mueller added a comment -

        In MessageExchangeDAOImpl.java change:

        @Basic @Column(name="FAULT_EXPLANATION")
        private String _faultExplanation;

        to

        @Basic @Column(name="FAULT_EXPLANATION", length=4096)
        private String _faultExplanation;

        Show
        Terry Mueller added a comment - In MessageExchangeDAOImpl.java change: @Basic @Column(name="FAULT_EXPLANATION") private String _faultExplanation; to @Basic @Column(name="FAULT_EXPLANATION", length=4096) private String _faultExplanation;
        Terry Mueller created issue -

          People

          • Assignee:
            Unassigned
            Reporter:
            Terry Mueller
          • Votes:
            1 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:

              Development