2

I'm using Message Broker 8 and MQ 7. When I try to use a Mapping Node in my message flow I get a java.lang.RuntimeException.

Here is what the event viewer shows:

( BROKER8.default ) The map script generation for QName ''{practica}:CambioFecha'' has failed, with the following details: ''java.lang.RuntimeException: ''.   

The generation of the map has failed.   

Review and resolve the problems indicated in the message from the map generation.

The full exception stack is:

    ExceptionList: ( ['MQROOT' : 0xe052600]
      (0x01000000:Name):RecoverableException = (
        (0x03000000:NameValue):File                 = 'F:\build\S000_P\src\DataFlowEngine\PluginInterface\ImbJniNode.cpp' (CHARACTER)
        (0x03000000:NameValue):Line                 = 1170 (INTEGER)
        (0x03000000:NameValue):Function             = 'ImbJniNode::evaluate' (CHARACTER)
        (0x03000000:NameValue):Type                 = 'ComIbmMSLMappingNode' (CHARACTER)
        (0x03000000:NameValue):Name                 = 'practica/DATAGRAMA#FCMComposite_1_7' (CHARACTER)
        (0x03000000:NameValue):Label                = 'practica.DATAGRAMA.Cambio Formato Fecha' (CHARACTER)
        (0x03000000:NameValue):Catalog              = 'BIPmsgs' (CHARACTER)
        (0x03000000:NameValue):Severity             = 3 (INTEGER)
        (0x03000000:NameValue):Number               = 2230 (INTEGER)
        (0x03000000:NameValue):Text                 = 'Caught exception and rethrowing' (CHARACTER)
        (0x01000000:Name     ):RecoverableException = (
          (0x03000000:NameValue):File                 = 'MbErrorHandler.java' (CHARACTER)
          (0x03000000:NameValue):Line                 = 146 (INTEGER)
          (0x03000000:NameValue):Function             = 'evaluate' (CHARACTER)
          (0x03000000:NameValue):Type                 = '' (CHARACTER)
          (0x03000000:NameValue):Name                 = '' (CHARACTER)
          (0x03000000:NameValue):Label                = '' (CHARACTER)
          (0x03000000:NameValue):Catalog              = 'BIPmsgs' (CHARACTER)
          (0x03000000:NameValue):Severity             = 3 (INTEGER)
          (0x03000000:NameValue):Number               = 3946 (INTEGER)
          (0x03000000:NameValue):Text                 = 'Caught BrokerXCIStaticException' (CHARACTER)
          (0x01000000:Name     ):Insert               = (
            (0x03000000:NameValue):Type = 5 (INTEGER)
            (0x03000000:NameValue):Text = '{practica}:CambioFecha' (CHARACTER)
          )
          (0x01000000:Name     ):Insert               = (
            (0x03000000:NameValue):Type = 5 (INTEGER)
            (0x03000000:NameValue):Text = 'java.lang.RuntimeException: ' (CHARACTER)
          )
          (0x01000000:Name     ):RecoverableException = (
            (0x03000000:NameValue):File     = 'MbErrorHandler.java' (CHARACTER)
            (0x03000000:NameValue):Line     = 310 (INTEGER)
            (0x03000000:NameValue):Function = 'throwableToMbException' (CHARACTER)
            (0x03000000:NameValue):Type     = '' (CHARACTER)
            (0x03000000:NameValue):Name     = '' (CHARACTER)
            (0x03000000:NameValue):Label    = '' (CHARACTER)
            (0x03000000:NameValue):Catalog  = 'BIPmsgs' (CHARACTER)
            (0x03000000:NameValue):Severity = 3 (INTEGER)
            (0x03000000:NameValue):Number   = 3949 (INTEGER)
            (0x03000000:NameValue):Text     = 'Caught BrokerXCIStaticException' (CHARACTER)
            (0x01000000:Name     ):Insert   = (
              (0x03000000:NameValue):Type = 5 (INTEGER)
              (0x03000000:NameValue):Text = 'java.lang.RuntimeException: 

    ' (CHARACTER)
            )
          )
        )
      )
    )

The entire message flow was working fine. So, I think it is not an error of the mapping node. Another detail, in others flows the mapping node doesn't work at all and gives the same error. I don't know what could be the problem. Maybe a JRE error?

Any idea?

Thanks!

Josué

JoshMc
  • 10,239
  • 2
  • 19
  • 38
brokermq
  • 97
  • 1
  • 4
  • 15
  • 1
    What is the output of java -version from the JVM that MQ Broker is using? – Mike Tunnicliffe Oct 13 '12 at 08:03
  • This is the output: java version "1.6.0" Java(TM) SE Runtime Environment (build pwa6460sr9fp1ifix-20110511(SR9 FP1+IZ9755 2)) IBM J9 VM (build 2.4, JRE 1.6.0 IBM J9 2.4 Windows 7 amd64-64 jvmwa6460sr9-20110 203_74623 (JIT enabled, AOT enabled) J9VM - 20110203_074623 JIT - r9_20101028_17488ifx3 GC - 20101027_AA) JCL - 20110203_01 – brokermq Oct 16 '12 at 20:41
  • OK. Well there are a bunch of JIT fixes in the SR10 release; do you have a full exception stack for the RuntimeException in the message, complete with "caused by" chain? – Mike Tunnicliffe Oct 17 '12 at 20:49
  • Thank you, I have added the exception stack to the question. – brokermq Oct 17 '12 at 21:19
  • That's not quite what I was expecting for an exception stack. You could try capturing a javacore at the time of the exception with JVM option -Xdump:java:events=throw,filter=java/lang/RuntimeException,range=1..3 but it might not trigger on the right exception without knowing the throwing method. The option will capture data on the first 3 occurrences of a RuntimeException being thrown. A javacore contains thread stacks. – Mike Tunnicliffe Oct 26 '12 at 15:23

1 Answers1

6

This is most probably due to the large Java heap size on 64 bit machines, as all the references are 4 bytes larger. To make it work, you could simply run it on a 32 bit broker or try any of the following -

  1. Use Xcompressedrefs (the explanation about it is here -

http://publib.boulder.ibm.com/infocenter/javasdk/v6r0/index.jsp?topic=%2Fcom.ibm.java.doc.diagnostics.60%2Fdiag%2Funderstanding%2Fmm_compressed_references.html)

a) Execute the following command in the broker prompt

mqsichangeproperties --broker name-- -e --EG name-- -o ComIbmJVMManager -n jvmSystemProperty -v \"-Xcompressedrefs\"

b) Verify that the JVM option is successfully applied

mqsireportproperties --broker name-- -e --EG name-- -o ComIbmJVMManager -n jvmSystemProperty

The system should display -

-Xcompressedrefs

c) Restart the Execution Group

  1. Increase the JVM memory, the default is 256MB a) Execute the following command

mqsichangeproperties --broker name-- -e --EG name-- -o ComIbmJVMManager -n jvmMaxHeapSize -v 536870912

b) Verify that the JVM option is successfully applied

mqsireportproperties --broker name-- -e --EG name-- -o ComIbmJVMManager -n jvmMaxHeapSize

c) Restart the Execution Group

Hope this helps

Rndm
  • 6,710
  • 7
  • 39
  • 58
Alex
  • 76
  • 2
  • Thank you very much for your response. I'll try to use your approaches. Not a solution, but I had to create a new broker and its queue manager, didn't change the flows.. and they worked... I don't know exactly what happened, but it seems that the broker was corrupted or something like that. – brokermq Nov 22 '12 at 20:47