From 298f2ebc50a030e47f0abcdbbfef49ff78f35cff Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 4 Sep 2017 17:32:23 +0200 Subject: [PATCH] Fix the deadlock in DependencyQueueTaskDispatcher --- .../dependency/DependencyQueueTaskDispatcher.java | 3 ++- .../DependencyQueueTaskDispatcherTest.java | 12 ++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/dependency/DependencyQueueTaskDispatcher.java b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/dependency/DependencyQueueTaskDispatcher.java index 289f803f6..4e3230303 100644 --- a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/dependency/DependencyQueueTaskDispatcher.java +++ b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/dependency/DependencyQueueTaskDispatcher.java @@ -204,7 +204,8 @@ protected List getBlockingDependencyProjects(List dependencies, ToGerritRunListener toGerritRunListener = ToGerritRunListener.getInstance(); if (toGerritRunListener != null) { for (Job dependency : dependencies) { - if (toGerritRunListener.isProjectTriggeredAndIncomplete(dependency, event)) { + if (toGerritRunListener.isTriggered(dependency, event) + && toGerritRunListener.isBuilding(dependency, event)) { blockingProjects.add(dependency); } } diff --git a/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/dependency/DependencyQueueTaskDispatcherTest.java b/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/dependency/DependencyQueueTaskDispatcherTest.java index 511db054d..ce2b8d587 100644 --- a/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/dependency/DependencyQueueTaskDispatcherTest.java +++ b/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/dependency/DependencyQueueTaskDispatcherTest.java @@ -219,12 +219,14 @@ public void shouldBlockTriggeringEvents() { dispatcher.onDoneTriggeringAll(patchsetCreated); //Setting the dependency as "triggered but not built" doReturn(true).when(toGerritRunListenerMock). - isProjectTriggeredAndIncomplete(abstractProjectDependencyMock, patchsetCreated); + isBuilding(abstractProjectDependencyMock, patchsetCreated); + doReturn(true).when(toGerritRunListenerMock). + isTriggered(abstractProjectDependencyMock, patchsetCreated); cause = dispatcher.canRun(item); assertNotNull("Build should be blocked", cause); //Setting the dependency as "triggered and built" doReturn(false).when(toGerritRunListenerMock). - isProjectTriggeredAndIncomplete(abstractProjectDependencyMock, patchsetCreated); + isBuilding(abstractProjectDependencyMock, patchsetCreated); cause = dispatcher.canRun(item); assertNull("Build should not be blocked", cause); } @@ -263,12 +265,14 @@ public void shouldBlockTriggeringManualPatchsetCreated() { verify(manualPatchsetCreated, times(1)).removeListener(dispatcher); //Setting the dependency as "triggered but not built" doReturn(true).when(toGerritRunListenerMock). - isProjectTriggeredAndIncomplete(abstractProjectDependencyMock, manualPatchsetCreated); + isTriggered(abstractProjectDependencyMock, manualPatchsetCreated); + doReturn(true).when(toGerritRunListenerMock). + isBuilding(abstractProjectDependencyMock, manualPatchsetCreated); cause = dispatcher.canRun(item); assertNotNull("Build should be blocked", cause); //Setting the dependency as "triggered and built" doReturn(false).when(toGerritRunListenerMock). - isProjectTriggeredAndIncomplete(abstractProjectDependencyMock, manualPatchsetCreated); + isBuilding(abstractProjectDependencyMock, manualPatchsetCreated); cause = dispatcher.canRun(item); assertNull("Build should not be blocked", cause); }