allure-framework/allure-core — pull request #443 by buzdin (2014-11-20 15:57:22+00:00)
Title: Solving concurrency problem

- Error occurs when one TestNG test initializes multiple threads, which execute test steps in parallel. This is fixed by using concurrent data structure instead of plain LinkedList. This problem is quite hard to reproduce using artificial tests.

I have been able to reproduce this with tests similar to below, but you have to run it together with lots of other stuff in order to reproduce the error.

```
@Test
public void supportForConcurrentUseOfChildThreads() throws Exception {
final int threads = 100;
final Allure lifecycle = Allure.LIFECYCLE;
lifecycle.fire(new TestCaseStartedEvent("uid", "name"));

ExecutorService service = Executors.newFixedThreadPool(threads);

final List> tasks = new ArrayList<>();
for (int i = 0; i < threads; i++) {
tasks.add(new Callable