-
Bug
-
Resolution: Fixed
-
Neutral
-
1.0.6
-
None
-
-
Empty show more show less
-
Features 4, Features 5
-
3
When multiple publications are executed at the same time sometimes a ConcurrentModificationException is thrown:
ERROR info.magnolia.publishing.command.PublicationCommand 18.03.2018 12:01:57 – Receiver: bechtlePublic-1, error: null [requesturi:] java.util.ConcurrentModificationException: null at java.util.HashMap$HashIterator.nextNode(HashMap.java:1442) ~[?:1.8.0_161] at java.util.HashMap$KeyIterator.next(HashMap.java:1466) ~[?:1.8.0_161] at info.magnolia.publishing.sender.operation.HttpPublicationOperation.getHeaders(HttpPublicationOperation.java:204) ~[magnolia-publishing-sender-1.0.1.jar:?] at info.magnolia.publishing.sender.operation.HttpPublicationOperation.execute(HttpPublicationOperation.java:101) ~[magnolia-publishing-sender-1.0.1.jar:?] at info.magnolia.publishing.sender.operation.HttpPublicationOperation.execute(HttpPublicationOperation.java:74) ~[magnolia-publishing-sender-1.0.1.jar:?] at info.magnolia.publishing.transactional.sender.TransactionalSender$2.doRun(TransactionalSender.java:110) ~[magnolia-publishing-transactional-sender-1.0.jar:?] at info.magnolia.publishing.sender.AbstractSender$Task.run(AbstractSender.java:291) ~[magnolia-publishing-core-1.0.1.jar:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_161] at com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:124) ~[guava-23.1-jre.jar:?] at com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:57) ~[guava-23.1-jre.jar:?] at com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:77) ~[guava-23.1-jre.jar:?] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[?:1.8.0_161] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[?:1.8.0_161] at java.lang.Thread.run(Thread.java:748) ~[?:1.8.0_161]
The problems seems to be in :
private Header[] getHeaders(Package<?> pckg) { Collection<Header> headers = new ArrayList<>(); String md5 = pckg.getProperties().get(RESOURCE_MAPPING_MD_ATTRIBUTE); String pass = System.currentTimeMillis() + ";" + userName + ";" + md5; pckg.addProperty(ACTIVATION_AUTH, SecurityUtil.encrypt(pass)); for (String key : pckg.getProperties().keySet()) { if (RESOURCE_MAPPING_MD_ATTRIBUTE.equals(key)) { // do not send md5 in plain string continue; } String value = encode(pckg.getProperties().get(key)); headers.add(new BasicHeader(key, value)); } return headers.toArray(new Header[0]); }
Acceptance criteria