[PUBLISHING-44] java.util.ConcurrentModificationException on info.magnolia.publishing.sender.operation.HttpPublicationOperation.getHeaders(Package<?>) Created: 19/Mar/18 Updated: 29/Mar/22 Resolved: 20/Feb/19 |
|
| Status: | Closed |
| Project: | Publishing |
| Component/s: | None |
| Affects Version/s: | 1.0.6 |
| Fix Version/s: | 1.0.7, 1.1 |
| Type: | Bug | Priority: | Neutral |
| Reporter: | Mercedes Iruela | Assignee: | Jaroslav Simak |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | 0d | ||
| Time Spent: | 1h | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||
| Template: |
|
||||
| Acceptance criteria: |
Empty
|
||||
| Task DoD: |
[ ]*
Doc/release notes changes? Comment present?
[ ]*
Downstream builds green?
[ ]*
Solution information and context easily available?
[ ]*
Tests
[ ]*
FixVersion filled and not yet released
[ ] 
Architecture Decision Record (ADR)
|
||||
| Bug DoR: |
[ ]*
Steps to reproduce, expected, and actual results filled
[ ]*
Affected version filled
|
||||
| Date of First Response: | |||||
| Epic Link: | Support | ||||
| Sprint: | Features 4, Features 5 | ||||
| Story Points: | 3 | ||||
| Team: | |||||
| Description |
|
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]); } |