0 Replies Latest reply on Jan 5, 2005 6:10 PM by 421511

    OO4O fails to interpret AQ error messages correctly

    421511
      We are encountering consistent failures of our OO4O application on multiple production sites. The application uses OO4O to work with Oracle Advanced Queuing. The problem stems from the failure of OO4O to correctly interpret and format Oracle error codes as COM exceptions. I have tried to describe the problem below, any suggestions would be much appreciated.

      Expected behaviour:
      When the OraAQ.Dequeue() method is called after a value has been assigned to the OraAQ.Wait property, then the dequeue call will timeout after the wait time (in seconds) if there is currently no message available. When this timeout occurs, AQ raises a "ORA-25228" error indicating that no message was received. Our application traps this error and re-attempts the dequeue in order to operate as a polling listener against the queue.

      Problem:
      In several production servers we are seeing cases where AQ raises this error but the resulting COM exception raised by OO4O does not contain the correct error number and description.

      The actual OO4O error message provided is one of two possible types. The first type is simply "OIP-08209: Dequeue error in AQ object". OIP-08209 is not documented anywhere that I can find, and is not listed in ORACLEO.HLP with the other OIP messages. ORA-08209 (rather than OIP-08209) is "The System Commit Number has not yet been initialized" which does not seem to be related at all.

      The second type of error description is more common and more variable. It appears that in many cases part of the expected ORA-25228 error number is available, but the rest is missing. As a result we see the following malformed OO4O error messages:

      "Dequeue error in AQ object, "
      "Dequeue error in AQ object, ORA"
      "Dequeue error in AQ object, ORA-"
      "Dequeue error in AQ object, ORA-2"
      "Dequeue error in AQ object, ORA-252"
      "Dequeue error in AQ object, ORA-2522"

      - but never the full "ORA-25228" error message we are expecting.

      In all cases the OO4O exception source is simply "Message 204 not found; product=OO4O; facility=OIP"

      The message source suggests the OO4O message file (OIPUS.MSB) cannot be loaded, but it is available and it seems that 0040 can read at least some of the error message.

      Frequency:
      Not all installs are affected - some work as expected and the error messages are correctly formatted.
      On other sites that demonstrate the problem the error message is badly interpreted only once or twice an hour, and all other timed-out dequeues raise a properly formatted "ORA-25228" exception as expected. On the worst affected sites, all calls to OraAQ.Dequeue() that timeout raise a badly formatted exception as described above.

      The only connection we can make between the failing sites is that the servers were recently patched from 8.1.7.3 to 9.2.0.1. No other problems have been seen with these servers and PL/SQL operations against AQ function correctly.

      Platform:
      Oracle RDBMS: 9.2.0.1 on Win2k and Win 2003
      Oracle Client: 9.2.0.1 and 9.2.0.4 on Win2k and Win 2003
      OO4O: 9.2.0.4

      Thanks in advance
      Craig