Skip to content

Commit af6c84b

Browse files
committed
fix(mutex): correct isLocked value
1 parent a3606c5 commit af6c84b

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

src/mutex/mutex.spec.ts

+8-2
Original file line numberDiff line numberDiff line change
@@ -39,14 +39,17 @@ describe("Mutex", () => {
3939
expect(mutex.isLocked).toBeTrue();
4040
expect(mutex.queueLength).toBe(1);
4141
mutex.unlock();
42-
expect(mutex.isLocked).toBeFalse();
42+
expect(mutex.isLocked).toBeTrue();
4343
expect(mutex.queueLength).toBe(0);
4444
}, delay);
4545

4646
// Will wait until the end of the `setTimeout`
4747
await mutex.lock();
4848
});
4949

50+
mutex.unlock();
51+
expect(mutex.isLocked).toBeFalse();
52+
5053
expect(elapsed).toBeGreaterThanOrEqual(delay - offset);
5154
expect(elapsed).toBeLessThanOrEqual(delay + offset);
5255
});
@@ -81,7 +84,7 @@ describe("Mutex", () => {
8184
expect(mutex.isLocked).toBeTrue();
8285
expect(mutex.queueLength).toBe(1);
8386
mutex.unlock();
84-
expect(mutex.isLocked).toBeFalse();
87+
expect(mutex.isLocked).toBeTrue();
8588
expect(mutex.queueLength).toBe(0);
8689
}, max);
8790

@@ -108,6 +111,7 @@ describe("Mutex", () => {
108111
expect(elapsed).toBeGreaterThanOrEqual(max - offset);
109112
expect(elapsed).toBeLessThanOrEqual(max + offset);
110113

114+
mutex.unlock();
111115
expect(mutex.isLocked).toBeFalse();
112116
expect(mutex.queueLength).toBe(0);
113117
});
@@ -144,6 +148,8 @@ describe("Mutex", () => {
144148
ConcurrencyExceedTimeoutException
145149
);
146150

151+
mutex.unlock();
152+
147153
// The queue is reset, since the `tryAcquire` failed
148154
expect(mutex.queueLength).toBe(0);
149155
expect(mutex.isLocked).toBeFalse();

src/mutex/mutex.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ export class Mutex implements Synchronizer {
1818
* @returns if the current mutex is currently locked
1919
*/
2020
public get isLocked(): boolean {
21-
return this.queueLength !== 0;
21+
return this.semaphore.permitsAvailable === 0;
2222
}
2323

2424
/**

0 commit comments

Comments
 (0)