Announcement

Collapse
No announcement yet.

Automatic Refresh Cache Before Processing Inbound XML Message

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Automatic Refresh Cache Before Processing Inbound XML Message

    Hi,

    I had created an Order Release in OTM via integration through element <Release> with IU option. This XML message is being generated by an external system. The same external system has a restore function which basically retrieves info from OTM back to the external system. Doing this means the order that had been restored had to be removed from OTM and made available again in the external system for modification, etc. The deletion of order at OTM is being done via a call to a stored procedure that directly purges records relevant to the order at OTM database and this works fine. The order disappears at OTM after the stored proc execution. However, when we try re-importing back the same order to OTM via integration, OTM fails the transmission with status ERROR and below is the message being thrown:

    IMessageCode = TRANSACTION_EXCEPTION
    IMessageText = CAUGHT THE FOLLOWING EXCEPTION WHILE PROCESSING TRANSACTION: glog.util.exception.RemoteExceptionWrapper Read_Record_Failure (cachedUser=PHL/LTL.ADMIN/null/ADMIN, class=class glog.ejb.order.ejb_OrEquipment_b8c88i_Impl, currentUserName=PHL/LTL.ADMIN, primaryContext=PHL/LTL.MKD000013 1, vpdUser=PHL/LTL.ADMIN/PHL/LTL.ADMIN/ADMIN) Unable to read {0=null} {1=null} from the database. Either the record has been removed by another user or you do not have rights to view it. (cachedUser=PHL/LTL.ADMIN/null/ADMIN, class=class glog.ejb.order.ejb_OrEquipment_b8c88i_Impl, currentUserName=PHL/LTL.ADMIN, primaryContext=PHL/LTL.MKD000013 1, vpdUser=PHL/LTL.ADMIN/PHL/LTL.ADMIN/ADMIN)

    Tried checking the logs and found that the failure occurs at point when system tries to update the order release while in fact, the order was no longer existing in the database. Tried changing the Transaction code of XML to "I" (insert) and system throws another error:


    IntegrationLogMessage
    • ILogSeqNo = 5370809
    • ITransactionNo = 6723807
    • ObjectGid
      • Gid
        • DomainName = PHL/LTL
        • Xid = MKD000013
    • WrittenBy = ReleaseInterface
    • IMessageClass = E
    • IMessageCode = DUPLICATE_KEY_ERROR
    • IMessageText = THE ELEMENT(S) Contact.ContactGid WITH VALUE(S) PHL/SHAREDAIR_EXPORT IS A DUPLICATE PRIMARY KEY
    • TimeStamp = 20090706153340
    • DomainName = PHL/LTL
    Based on above findings, it seems that the reason for failure is because the cache is not refreshed. System still evaluates the order to be existing in OTM, thus unable to execute an insert rather than update for IU mode. In "I" mode, the order id is detected to be duplicate while the order no longer exists in the database.

    Now my question: Is there a way to automatically trigger a cache refresh / clear before processing an inbound XML message? Is there such configuration or property that can be set to achieve this goal?

    Hoping for your kind suggestion on this.

    Thanks and best regards!

  • #2
    Re: Automatic Refresh Cache Before Processing Inbound XML Message

    Hi,

    The first error does look like a cache issue. However the second looks like you have a record in the DB that you would need to delete for the pure insert 'I' to succeed.

    Have you verified that the contact_gid PHL/SHAREDAIR_EXPORT is in fact not in the database at the time of the error? You may have that contact tied to multiple orders so deleteing it may not be reasonable.

    Can you not use a transaction code of 'D' to delete the order rather than using PL/SQL outside of the application? This method should avoid any cache related issues.

    --Alan

    Comment


    • #3
      Re: Automatic Refresh Cache Before Processing Inbound XML Message

      Hi ,
      Read_Record_Failure (cachedUser=XXXXX(User Name)/null/XXXXX(Role name), class=class glog.ejb.order.ejb_OrderMovement_fj5o3y_Impl, currentUserName=XXXX, primaryContext=Order Release Id XXXX, vpdUser=xxxx user name/xxxx user name/xxxxuser role name)
      Unable to read {0=null} {1=null} from the database. Either the record has been removed by another user or you do not have rights to view it. (cachedUser=xxxx user name/null/xxxxuser role name, class=class glog.ejb.order.ejb_OrderMovement_fj5o3y_Impl, currentUserName=xxxx user name, primaryContext=Order Release Id XXXX, vpdUser=xxxx user name/xxxx user name/xxxxuser role name)

      same error we were getting at the time of shipment creation/after shipment creation ..
      agents also started failing with the above error...

      please suggest on the above error....help will be appreciated...

      Comment


      • #4
        Re: Automatic Refresh Cache Before Processing Inbound XML Message

        Hi ,

        Any idea on the above error..
        Please suggest me on this.
        Thanks in advance

        Comment


        • #5
          Re: Automatic Refresh Cache Before Processing Inbound XML Message

          Do you have vpd profile for the user and have predicates declining the access to read/write order movements?
          Can you access the order movement using UI by logging as a user in question?

          The primary cause is that the user cannot access the concerned order movement, this can be due to the grants/vpds for the user. Since shipment is created, the order movement is present in database, it is only that the user is restricted to read the record.
          -------
          Thanks and Regards
          Anurag Saini
          MavenWire

          Comment


          • #6
            Re: Automatic Refresh Cache Before Processing Inbound XML Message

            Hi ,
            Thanks for the update..

            I am getting same error with different class path.And also Generic_Remote_Exception
            java.rmi.NoSuchObjectException: Bean with key: domain.XXXXXX 1 could not be removed.
            The underlying exception was:glog.util.exception.RemoteExceptionWrapper
            Read_Record_Failure (cachedUser=user/null/user_role, class=class glog.ejb.shipment.ejb_ShipmentStop_l4lf06_Impl, currentUserName=SLB.EPINSOM, primaryContext=domain.XXX1, vpdUser=user/user/user_role)
            Unable to read {0=null=null} {1=null=null} from the database. Either the record has been removed by another user or you do not have rights to view it. (cachedUser=user/null/user_role, class=class glog.ejb.shipment.ejb_ShipmentStop_l4lf06_Impl, currentUserName=SLB.EPINSOM, primaryContext=domain.user 1, vpdUser=user/user/user_role)
            on various stages.


            Cpuld any one suggest on the above error...
            Thanks

            Comment


            • #7
              Re: Automatic Refresh Cache Before Processing Inbound XML Message

              Were you able to resolve the issue

              Comment


              • #8
                Re: Automatic Refresh Cache Before Processing Inbound XML Message

                Nope ..Still issue appears Randomly with out any reason.Not able to figure out why and how issue occurs...

                Comment

                Working...
                X