From d82fdc9866cad5eb727a622dfc948633be80e7bb Mon Sep 17 00:00:00 2001 From: kamaci Date: Tue, 29 Jan 2019 10:56:07 +0300 Subject: [PATCH 1/3] Improper equals override is fixed to prevent NullPointerException --- .../druid/indexing/overlord/TaskLockbox.java | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/indexing-service/src/main/java/org/apache/druid/indexing/overlord/TaskLockbox.java b/indexing-service/src/main/java/org/apache/druid/indexing/overlord/TaskLockbox.java index b8402fab3bed..f3e374a6040b 100644 --- a/indexing-service/src/main/java/org/apache/druid/indexing/overlord/TaskLockbox.java +++ b/indexing-service/src/main/java/org/apache/druid/indexing/overlord/TaskLockbox.java @@ -1067,22 +1067,18 @@ void forEachTask(Consumer action) } @Override - public boolean equals(Object o) - { + public boolean equals(Object o) { if (this == o) { return true; } - if (!getClass().equals(o.getClass())) { - return false; - } - - final TaskLockPosse that = (TaskLockPosse) o; - if (!taskLock.equals(that.taskLock)) { + if (o == null || !getClass().equals(o.getClass())) { return false; } - return taskIds.equals(that.taskIds); + TaskLockPosse that = (TaskLockPosse) o; + return java.util.Objects.equals(taskLock, that.taskLock) && + java.util.Objects.equals(taskIds, that.taskIds); } @Override From 74a88710dd5f7c99975497f17dd7825d48345223 Mon Sep 17 00:00:00 2001 From: kamaci Date: Tue, 29 Jan 2019 11:21:41 +0300 Subject: [PATCH 2/3] Fixed curly brace indentation. --- .../java/org/apache/druid/indexing/overlord/TaskLockbox.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/indexing-service/src/main/java/org/apache/druid/indexing/overlord/TaskLockbox.java b/indexing-service/src/main/java/org/apache/druid/indexing/overlord/TaskLockbox.java index f3e374a6040b..787852ddfbd5 100644 --- a/indexing-service/src/main/java/org/apache/druid/indexing/overlord/TaskLockbox.java +++ b/indexing-service/src/main/java/org/apache/druid/indexing/overlord/TaskLockbox.java @@ -1067,7 +1067,8 @@ void forEachTask(Consumer action) } @Override - public boolean equals(Object o) { + public boolean equals(Object o) + { if (this == o) { return true; } From 2331f5ce3547568322610e941b93a61640eb9cf0 Mon Sep 17 00:00:00 2001 From: kamaci Date: Wed, 6 Feb 2019 22:11:17 +0300 Subject: [PATCH 3/3] Test method is added for equals method of TaskLockPosse class. --- .../indexing/overlord/TaskLockboxTest.java | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/indexing-service/src/test/java/org/apache/druid/indexing/overlord/TaskLockboxTest.java b/indexing-service/src/test/java/org/apache/druid/indexing/overlord/TaskLockboxTest.java index 560425512513..a2a14a006bba 100644 --- a/indexing-service/src/test/java/org/apache/druid/indexing/overlord/TaskLockboxTest.java +++ b/indexing-service/src/test/java/org/apache/druid/indexing/overlord/TaskLockboxTest.java @@ -667,6 +667,36 @@ public void testFindLockPosseAfterRevokeWithDifferentLockIntervals() throws Entr Assert.assertTrue(lowLockPosse.getTaskLock().isRevoked()); } + @Test + public void testLockPosseEquals() + { + final Task task1 = NoopTask.create(); + final Task task2 = NoopTask.create(); + + TaskLock taskLock1 = new TaskLock(TaskLockType.EXCLUSIVE, + task1.getGroupId(), + task1.getDataSource(), + Intervals.of("2018/2019"), + "v1", + task1.getPriority()); + + TaskLock taskLock2 = new TaskLock(TaskLockType.EXCLUSIVE, + task2.getGroupId(), + task2.getDataSource(), + Intervals.of("2018/2019"), + "v2", + task2.getPriority()); + + TaskLockPosse taskLockPosse1 = new TaskLockPosse(taskLock1); + TaskLockPosse taskLockPosse2 = new TaskLockPosse(taskLock2); + TaskLockPosse taskLockPosse3 = new TaskLockPosse(taskLock1); + + Assert.assertNotEquals(taskLockPosse1, null); + Assert.assertNotEquals(null, taskLockPosse1); + Assert.assertNotEquals(taskLockPosse1, taskLockPosse2); + Assert.assertEquals(taskLockPosse1, taskLockPosse3); + } + private Set getAllLocks(List tasks) { return tasks.stream()