Skip to content

Commit a69355a

Browse files
committed
Add example of a faulty distlock
1 parent de1c2d4 commit a69355a

File tree

2 files changed

+33
-1
lines changed

2 files changed

+33
-1
lines changed

cli.php

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
$app->command('simple:lock', function (OutputInterface $output, Factory $factory) {
4444
$resource = new UnsafeSharedResource('very-important-thing');
4545

46-
$lock = $factory->createLock('simple:lock');
46+
$lock = $factory->createLock('simple:lock', 10);
4747

4848
do {
4949
$lock->acquire(true);
@@ -57,6 +57,29 @@
5757
});
5858

5959

60+
61+
$app->command('simple:distlockerror', function (OutputInterface $output, Factory $factory) {
62+
$resource = new UnsafeSharedResource('very-important-thing');
63+
64+
$lock = $factory->createLock('simple:lock', 10);
65+
66+
do {
67+
$lock->acquire(true);
68+
69+
if ((rand(0, 1000) % 1000) === 0) {
70+
throw new \Exception('bye bye!');
71+
}
72+
73+
try {
74+
$value = $resource->increase();
75+
$output->writeln($value);
76+
} finally {
77+
$lock->release();
78+
}
79+
} while(true);
80+
});
81+
82+
6083
$app->command('barrier', function (OutputInterface $output, Factory $factory) {
6184
$processes = new UnsafeSharedResource('processes');
6285
$barrierFlag = new UnsafeSharedResource('barrier');

composer.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,26 @@
1818
],
1919
"run:simple-lock": [
2020
"docker-compose exec -T app pm2 delete all || true",
21+
"docker-compose exec -T redis redis-cli flushall",
2122
"docker-compose exec -T app php /app/cli.php resource:reset very-important-thing",
2223
"docker-compose exec -T app pm2 start /app/pm2/simple-lock.yml"
2324
],
25+
"run:faulty-lock": [
26+
"docker-compose exec -T app pm2 delete all || true",
27+
"docker-compose exec -T redis redis-cli flushall",
28+
"docker-compose exec -T app php /app/cli.php resource:reset very-important-thing",
29+
"docker-compose exec -T app pm2 start /app/pm2/simple-distlockerror.yml"
30+
],
2431
"run:barrier": [
2532
"docker-compose exec -T app pm2 delete all || true",
33+
"docker-compose exec -T redis redis-cli flushall",
2634
"docker-compose exec -T app php /app/cli.php resource:reset barrier",
2735
"docker-compose exec -T app php /app/cli.php resource:reset processes",
2836
"docker-compose exec -T app pm2 start /app/pm2/barrier.yml"
2937
],
3038
"run:rw": [
3139
"docker-compose exec -T app pm2 delete all || true",
40+
"docker-compose exec -T redis redis-cli flushall",
3241
"docker-compose exec -T app php /app/cli.php resource:reset very-important-thing",
3342
"docker-compose exec -T app php /app/cli.php resource:reset readers",
3443
"docker-compose exec -T app pm2 start /app/pm2/read-write.yml"

0 commit comments

Comments
 (0)