[ 
https://issues.apache.org/jira/browse/NIFI-7600?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17163470#comment-17163470
 ] 

Bryan Bende commented on NIFI-7600:
-----------------------------------

Thanks for submitting this. I'm going to unset the fix version of 1.12.0 since 
this isn't a blocker for that release. 

> Defining JMS attribute types breaks due to invalid characters
> -------------------------------------------------------------
>
>                 Key: NIFI-7600
>                 URL: https://issues.apache.org/jira/browse/NIFI-7600
>             Project: Apache NiFi
>          Issue Type: Bug
>          Components: Extensions
>    Affects Versions: 1.11.4
>            Reporter: Darren Hitchman
>            Assignee: Darren Hitchman
>            Priority: Major
>              Labels: JMS
>             Fix For: 1.12.0
>
>   Original Estimate: 4h
>          Time Spent: 40m
>  Remaining Estimate: 3h 20m
>
> JMSPublisher causes Exception when setting attributes in the JMS message due 
> to invalid characters.  When defining types to be used when sending JMS 
> attributes (e.g. JMS_IBM_Encoding.type=integer) , the JMSPublishercorrectly 
> sets the type but also adds the '.type' attribute into the message, causing 
> an Exception as JMS doesnt support a dot character in attribute names. 
> NIFI-6957 was suppose to fix this however the change in JMSPublish was 
> removed.
> There is an option to 'allowIllegalChars' in PublishJMS however '.type' 
> attributes are passed along regardless of this setting.
>  
> The JMSPublisher should ignore message attributes ending with '.type' when 
> there is a matching attribute without the '.type' suffix
>  
> example exception.
>  
> com.ibm.msg.client.jms.DetailedMessageFormatException: JMSCC0049: The 
> property name 'JMS_IBM_Encoding.type' is not a valid Java(tm) identifier.
> The supplied property name does not conform to the allowed format described 
> in the JMS specification.
> Check the characters used in the property name and modify as necessary.
>                 at 
> java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native
>  Method)
>                 at 
> java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
>                 at 
> java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
>                 at 
> java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
>                 at 
> com.ibm.msg.client.commonservices.j2se.NLSServices.createException(NLSServices.java:319)
>                 at 
> com.ibm.msg.client.commonservices.nls.NLSServices.createException(NLSServices.java:226)
>                 at 
> com.ibm.msg.client.jms.internal.JmsErrorUtils.createException(JmsErrorUtils.java:126)
>                 at 
> com.ibm.msg.client.jms.internal.JmsMessageImpl.checkPropName(JmsMessageImpl.java:2595)
>                 at 
> com.ibm.msg.client.jms.internal.JmsMessageImpl.setStringProperty(JmsMessageImpl.java:1997)
>                 at 
> com.ibm.jms.JMSMessage.setStringProperty(JMSMessage.java:1516)
>                 at 
> jdk.internal.reflect.GeneratedMethodAccessor198.invoke(Unknown Source)
>                 at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>                 at java.base/java.lang.reflect.Method.invoke(Method.java:566)
>                 at 
> org.apache.nifi.controller.service.StandardControllerServiceInvocationHandler.invoke(StandardControllerServiceInvocationHandler.java:254)
>                 at 
> org.apache.nifi.controller.service.StandardControllerServiceInvocationHandler$ProxiedReturnObjectInvocationHandler.invoke(StandardControllerServiceInvocationHandler.java:240)
>                 at com.sun.proxy.$Proxy145.setStringProperty(Unknown Source)
>                 at 
> org.apache.nifi.jms.processors.JMSPublisher$JmsPropertySetterEnum.lambda$static$7(JMSPublisher.java:196)
>                 at 
> org.apache.nifi.jms.processors.JMSPublisher$JmsPropertySetterEnum.setProperty(JMSPublisher.java:205)
>                 at 
> org.apache.nifi.jms.processors.JMSPublisher.setMessageHeaderAndProperties(JMSPublisher.java:123)
>                 at 
> org.apache.nifi.jms.processors.JMSPublisher$1.createMessage(JMSPublisher.java:59)
>                 at 
> org.springframework.jms.core.JmsTemplate.doSend(JmsTemplate.java:593)
>                 at 
> org.springframework.jms.core.JmsTemplate$4.doInJms(JmsTemplate.java:574)
>                 at 
> org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:484)
>                 at 
> org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java:570)
>                 at 
> org.apache.nifi.jms.processors.JMSPublisher.publish(JMSPublisher.java:54)
>                 at 
> org.apache.nifi.jms.processors.PublishJMS.rendezvousWithJms(PublishJMS.java:214)
>                 at 
> org.apache.nifi.jms.processors.PublishJMS.rendezvousWithJms(PublishJMS.java:68)
>                 at 
> org.apache.nifi.jms.processors.AbstractJMSProcessor.onTrigger(AbstractJMSProcessor.java:192)
>                 at 
> org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27)
>                 at 
> org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1174)
>                 at 
> org.apache.nifi.controller.tasks.ConnectableTask.invoke(ConnectableTask.java:213)
>                 at 
> org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent$1.run(TimerDrivenSchedulingAgent.java:117)
>                 at 
> org.apache.nifi.engine.FlowEngine$2.run(FlowEngine.java:110)
>                 at 
> java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
>                 at 
> java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
>                 at 
> java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
>                 at 
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>                 at 
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
>                 at java.base/java.lang.Thread.run(Thread.java:834)



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to