Skip to content

Commit 65c697d

Browse files
committed
fix: Fix argon and balloon blocking application shutdown
1 parent 462cf46 commit 65c697d

File tree

3 files changed

+16
-4
lines changed

3 files changed

+16
-4
lines changed

src/main/java/com/password4j/Argon2Function.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ public class Argon2Function extends AbstractHashingFunction
101101

102102
if (parallelism >= 1)
103103
{
104-
service = Executors.newFixedThreadPool(Utils.AVAILABLE_PROCESSORS);
104+
service = Utils.createExecutorService();
105105
}
106106
}
107107

src/main/java/com/password4j/BalloonHashingFunction.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public class BalloonHashingFunction extends AbstractHashingFunction
5959
this.delta = delta;
6060
if (parallelism > 1)
6161
{
62-
this.service = Executors.newFixedThreadPool(Utils.AVAILABLE_PROCESSORS);
62+
this.service = Utils.createExecutorService();
6363
}
6464

6565
}

src/main/java/com/password4j/Utils.java

+14-2
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@
3232
import java.util.LinkedList;
3333
import java.util.List;
3434
import java.util.Random;
35+
import java.util.concurrent.ExecutorService;
36+
import java.util.concurrent.Executors;
37+
import java.util.concurrent.atomic.AtomicInteger;
3538
import java.util.regex.Matcher;
3639
import java.util.regex.Pattern;
3740

@@ -50,6 +53,10 @@ class Utils
5053

5154
private static final int[] FROM_BASE64 = new int[256];
5255

56+
private static final AtomicInteger THREAD_COUNTER = new AtomicInteger(1);
57+
58+
private static final ThreadGroup THREAD_GROUP = new ThreadGroup("Password4j Workers");
59+
5360
static
5461
{
5562
Arrays.fill(FROM_BASE64, -1);
@@ -655,6 +662,11 @@ static List<byte[]> split(byte[] array, byte delimiter) {
655662
return byteArrays;
656663
}
657664

658-
659-
665+
static ExecutorService createExecutorService() {
666+
return Executors.newFixedThreadPool(AVAILABLE_PROCESSORS, runnable -> {
667+
Thread thread = new Thread(THREAD_GROUP, runnable, "password4j-worker-" + THREAD_COUNTER.getAndIncrement());
668+
thread.setDaemon(true);
669+
return thread;
670+
});
671+
}
660672
}

0 commit comments

Comments
 (0)