[ 
https://issues.apache.org/jira/browse/NIFI-7639?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Pierre Villard resolved NIFI-7639.
----------------------------------
    Resolution: Feedback Received

Apache NiFi 1.x is no longer maintained and no new release is planned on the 
1.x release line. Marking as resolved as part of a cleanup operation. Please 
open a new one with an updated description if this is still relevant for NiFi 
2.x.

> JMSPublisher incorrectly uses JMS_Expiration and causes NumberFormatExpection
> -----------------------------------------------------------------------------
>
>                 Key: NIFI-7639
>                 URL: https://issues.apache.org/jira/browse/NIFI-7639
>             Project: Apache NiFi
>          Issue Type: Bug
>          Components: Core Framework
>    Affects Versions: 1.11.4
>            Reporter: Darren Hitchman
>            Assignee: Darren Hitchman
>            Priority: Major
>   Original Estimate: 2h
>  Remaining Estimate: 2h
>
> {color:#000080}JMSPublisher incorrectly sets the{color}{color:#000080} 
> TimeToLive when it should set the expiry of the message.{color}
> {color:#000080}This becomes an issue when using ConsumeJMS as it sets the 
> jms_expiry to the expected value (ms timestamp) despite PublishJMS not being 
> compatible (expecting ms duration for ttl).  {color}
> {color:#000080}JMS expiry is defined as the timestamp (ms) when the messages 
> expires where as the setTimeToLive defined in the jmsTemplate is referring to 
> the number of ms from current time until expiry,{color}
> {color:#000080}else if 
> {color}(entry.getKey().equals(JmsHeaders.{color:#660e7a}EXPIRATION{color})) {
>  
> {color:#000080}this{color}.{color:#660e7a}jmsTemplate{color}.setTimeToLive(Integer.parseInt(entry.getValue()));
>  
> {color:#000080}this{color}.{color:#660e7a}jmsTemplate{color}.setExplicitQosEnabled({color:#000080}true{color});
> }
> *Integer.parseInt fails to parse the Long that is defined in the attributes 
> jms_expiration.
> A workout for this bug would be to use UpdateAttributes to change the 
> jms_expiration value from a timestamp to a duration value e.g. 
> ttl=jms_expiration-now() how ever PublishJMS should correctly honor the 
> intended value.
> If we wish to continue using the spring framework for the TTL then a possible 
> fix would be
> {color:#000080}this{color}.{color:#660e7a}jmsTemplate{color}.setTimeToLive( 
> System.currentTimeMillis() - Long.parseLong(entry.getValue()));
>  
> however I think we need to not break logic based on existing presumptions by 
> users.  We can for values less then 214748364.7 seconds (about 7 years) as 
> per 
> [https://www.ibm.com/support/knowledgecenter/SSFKSJ_7.5.0/com.ibm.mq.dev.doc/q032030_.htm]
>  . Any values less than this is presumed to be TTL rather than expiry
>  
> more info here. 
> http://activemq.apache.org/components/artemis/documentation/1.0.0/message-expiry.html



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to