Set one lock per account for push notif

This commit is contained in:
sim 2023-09-04 23:30:59 +02:00
parent 36b28a4483
commit ceebe74ec1
1 changed files with 13 additions and 1 deletions

View File

@ -65,7 +65,18 @@ public class NotificationsHelper {
public static HashMap<String, List<String>> pushed_notifications = new HashMap<>();
public static ReentrantLock lock = new ReentrantLock();
private static final HashMap<String, ReentrantLock> lockMap = new HashMap<>();
private static ReentrantLock getLock(String slug) {
synchronized (lockMap) {
if (lockMap.containsKey(slug)) {
return lockMap.get(slug);
}
ReentrantLock lock = new ReentrantLock();
lockMap.put(slug, lock);
return lock;
}
}
public static synchronized void task(Context context, String slug) throws DBException {
@ -94,6 +105,7 @@ public class NotificationsHelper {
}
new Thread(() -> {
ReentrantLock lock = getLock(slug);
try {
// fetch if we get the lock, or ignore, another thread is doing the job
if (lock.tryLock()) {