This is an automated email from the ASF dual-hosted git repository.
joewitt pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nifi.git
The following commit(s) were added to refs/heads/master by this push:
new b35ad7c NIFI-7039 - This closes #3995. Fix: PublishJMS outgoing
flowfile attribute cleanup could lead to ConcurrentModificationException
b35ad7c is described below
commit b35ad7cd2089c20f34692fff51f39488df0feaf9
Author: Tamas Palfy <[email protected]>
AuthorDate: Fri Jan 17 17:17:25 2020 +0100
NIFI-7039 - This closes #3995. Fix: PublishJMS outgoing flowfile attribute
cleanup could lead to ConcurrentModificationException
Signed-off-by: Joe Witt <[email protected]>
---
.../java/org/apache/nifi/jms/processors/PublishJMS.java | 13 ++-----------
.../java/org/apache/nifi/jms/processors/PublishJMSIT.java | 8 +++++++-
2 files changed, 9 insertions(+), 12 deletions(-)
diff --git
a/nifi-nar-bundles/nifi-jms-bundle/nifi-jms-processors/src/main/java/org/apache/nifi/jms/processors/PublishJMS.java
b/nifi-nar-bundles/nifi-jms-bundle/nifi-jms-processors/src/main/java/org/apache/nifi/jms/processors/PublishJMS.java
index c95ec9d..9cb2451 100644
---
a/nifi-nar-bundles/nifi-jms-bundle/nifi-jms-processors/src/main/java/org/apache/nifi/jms/processors/PublishJMS.java
+++
b/nifi-nar-bundles/nifi-jms-bundle/nifi-jms-processors/src/main/java/org/apache/nifi/jms/processors/PublishJMS.java
@@ -133,17 +133,8 @@ public class PublishJMS extends
AbstractJMSProcessor<JMSPublisher> {
for (final Map.Entry<String, String> entry :
flowFile.getAttributes().entrySet()) {
final String key = entry.getKey();
if (pattern.matcher(key).matches()) {
- attributesToSend.put(key, flowFile.getAttribute(key));
- }
- }
-
- // Optionally remove illegal headers names apart from .type
attributes for JMS variable types
- if (!allowIllegalChars) {
- for (final Map.Entry<String,String> entry :
attributesToSend.entrySet()) {
- if (!entry.getKey().endsWith(".type")){
- if (entry.getKey().contains("-") ||
entry.getKey().contains(".")) {
- attributesToSend.remove(entry.getKey());
- }
+ if (allowIllegalChars || key.endsWith(".type") ||
(!key.contains("-") && !key.contains("."))) {
+ attributesToSend.put(key,
flowFile.getAttribute(key));
}
}
}
diff --git
a/nifi-nar-bundles/nifi-jms-bundle/nifi-jms-processors/src/test/java/org/apache/nifi/jms/processors/PublishJMSIT.java
b/nifi-nar-bundles/nifi-jms-bundle/nifi-jms-processors/src/test/java/org/apache/nifi/jms/processors/PublishJMSIT.java
index ad3febd..1f489d5 100644
---
a/nifi-nar-bundles/nifi-jms-bundle/nifi-jms-processors/src/test/java/org/apache/nifi/jms/processors/PublishJMSIT.java
+++
b/nifi-nar-bundles/nifi-jms-bundle/nifi-jms-processors/src/test/java/org/apache/nifi/jms/processors/PublishJMSIT.java
@@ -63,7 +63,10 @@ public class PublishJMSIT {
Map<String, String> attributes = new HashMap<>();
attributes.put("foo", "foo");
attributes.put(JmsHeaders.REPLY_TO, "cooQueue");
- attributes.put("test-attribute", "value");
+ attributes.put("test-attribute.type", "allowed1");
+ attributes.put("test.attribute.type", "allowed2");
+ attributes.put("test-attribute", "notAllowed1");
+ attributes.put("jms.source.destination", "notAllowed2");
runner.enqueue("Hey dude!".getBytes(), attributes);
runner.run(1, false); // Run once but don't shut down because we want
the Connection Factory left in tact so that we can use it.
@@ -77,7 +80,10 @@ public class PublishJMSIT {
assertEquals("Hey dude!", new String(messageBytes));
assertEquals("cooQueue", ((Queue)
message.getJMSReplyTo()).getQueueName());
assertEquals("foo", message.getStringProperty("foo"));
+ assertEquals("allowed1",
message.getStringProperty("test-attribute.type"));
+ assertEquals("allowed2",
message.getStringProperty("test.attribute.type"));
assertNull(message.getStringProperty("test-attribute"));
+ assertNull(message.getStringProperty("jms.source.destination"));
runner.run(1, true, false); // Run once just so that we can trigger
the shutdown of the Connection Factory
}