Skip to content

Conversation

@gam6itko
Copy link
Collaborator

@gam6itko gam6itko commented Sep 9, 2023

Simple bootloader example

final class LockBootloader extends Bootloader
{
    public function defineSingletons(): array
    {
        return [
            RR\LockInterface::class => RR\Lock::class,
            LockFactory::class => LockFactory::class,
            PersistingStoreInterface::class => static fn (RR\LockInterface $rrLock) => new RoadRunnerStore($rrLock),
        ];
    }
}

Tests code example

$key = 'test-lock';

$lock1 = $factory->createLock($key);
$res1 = $lock1->acquire();
$output->writeln('Lock 1 acquire: '.(int) $res1);

$lock2 = $factory->createLock($key);
$res2 = $lock2->acquire();
$output->writeln('Lock 2 acquire: '.(int) $res2);

$output->writeln('Lock 1 release');
$lock1->release();
sleep(1);

$lock2 = $factory->createLock($key);
$res2 = $lock2->acquire();
$output->writeln('Lock 2 acquire: '.(int) $res2);

$lock2->release();
$output->writeln('Lock 2 release');

rr output

// $lock1->acquire()

DEBUG   lock   lock request received   {"ttl": 10000000, "wait_ttl": 0, "resource": "test-lock", "id": "f1b7674c-260f-436f-a04c-b75a1f9b881f"}
DEBUG   lock   acquired muCh and releaseMuCh mutexes   {"resource": "test-lock", "id": "f1b7674c-260f-436f-a04c-b75a1f9b881f"}
DEBUG   lock   acquiring lock, w==0, r==0      {"resource": "test-lock", "id": "f1b7674c-260f-436f-a04c-b75a1f9b881f"}
DEBUG   lock   releaseMuCh lock returned       {"resource": "test-lock", "id": "f1b7674c-260f-436f-a04c-b75a1f9b881f"}
DEBUG   lock   updateTTL request received      {"ttl": 300000000, "wait_ttl": 0, "resource": "test-lock", "id": "f1b7674c-260f-436f-a04c-b75a1f9b881f"}
DEBUG   lock   acquired muCh and releaseMuCh mutexes   {"resource": "test-lock", "id": "f1b7674c-260f-436f-a04c-b75a1f9b881f"}
DEBUG   lock   updateTTL started       {"resource": "test-lock", "id": "f1b7674c-260f-436f-a04c-b75a1f9b881f"}
DEBUG   lock   lock/rlocl TTL was successfully updated {"resource": "test-lock", "id": "f1b7674c-260f-436f-a04c-b75a1f9b881f"}
DEBUG   lock   releaseMuCh lock returned       {"resource": "test-lock", "id": "f1b7674c-260f-436f-a04c-b75a1f9b881f"}
DEBUG   lock   updating r/lock ttl     {"resource": "test-lock", "id": "f1b7674c-260f-436f-a04c-b75a1f9b881f", "new_ttl_microsec": 300000000}


// $lock2->acquire()

DEBUG   lock   lock request received   {"ttl": 10000000, "wait_ttl": 0, "resource": "test-lock", "id": "c0b24099-d2a5-4d98-b7fa-d3233ae7876d"}
DEBUG   lock   acquired muCh and releaseMuCh mutexes   {"resource": "test-lock", "id": "c0b24099-d2a5-4d98-b7fa-d3233ae7876d"}
DEBUG   lock   waiting to hold the mutex       {"id": "c0b24099-d2a5-4d98-b7fa-d3233ae7876d"}
DEBUG   lock   returning releaseMuCh mutex to temporarily allow releasing locks        {"resource": "test-lock", "id": "c0b24099-d2a5-4d98-b7fa-d3233ae7876d"}
WARN    lock   lock notification wait timeout expired  {"id": "c0b24099-d2a5-4d98-b7fa-d3233ae7876d"}
DEBUG   lock   releaseMuCh lock not returned, channel is full  {"resource": "test-lock", "id": "c0b24099-d2a5-4d98-b7fa-d3233ae7876d"}


// $lock1->release()

DEBUG   lock   release request received        {"ttl": 0, "wait_ttl": 0, "resource": "test-lock", "id": "f1b7674c-260f-436f-a04c-b75a1f9b881f"}
DEBUG   lock   acquired release mutex  {"resource": "test-lock", "id": "f1b7674c-260f-436f-a04c-b75a1f9b881f"}
DEBUG   lock   lock successfully released      {"resource": "test-lock", "id": "f1b7674c-260f-436f-a04c-b75a1f9b881f"}
DEBUG   lock   releaseMuCh lock returned       {"resource": "test-lock", "id": "f1b7674c-260f-436f-a04c-b75a1f9b881f"}
DEBUG   lock   r/lock: ttl removed, callback call      {"resource": "test-lock", "id": "f1b7674c-260f-436f-a04c-b75a1f9b881f", "ttl microseconds": 10000000}
DEBUG   lock   current writers and readers count       {"writers": 0, "readers": 0, "resource": "test-lock", "deleted id": "f1b7674c-260f-436f-a04c-b75a1f9b881f"}
DEBUG   lock   deleting the last lock, sending notification    {"resource": "test-lock", "id": "f1b7674c-260f-436f-a04c-b75a1f9b881f"}
DEBUG   lock   'exists' request received       {"ttl": 0, "wait_ttl": 0, "resource": "test-lock", "id": "f1b7674c-260f-436f-a04c-b75a1f9b881f"}
DEBUG   lock   acquired muCh and releaseMuCh mutexes   {"resource": "test-lock", "id": "f1b7674c-260f-436f-a04c-b75a1f9b881f"}
WARN    lock   no such lock ID {"resource": "test-lock", "id": "f1b7674c-260f-436f-a04c-b75a1f9b881f"}
DEBUG   lock   releaseMuCh lock returned       {"resource": "test-lock", "id": "f1b7674c-260f-436f-a04c-b75a1f9b881f"}


// $lock2->acquire()

DEBUG   lock   lock request received   {"ttl": 10000000, "wait_ttl": 0, "resource": "test-lock", "id": "9941bb50-b73c-40fe-8a9a-b8ec4c43d6ab"}
DEBUG   lock   acquired muCh and releaseMuCh mutexes   {"resource": "test-lock", "id": "9941bb50-b73c-40fe-8a9a-b8ec4c43d6ab"}
DEBUG   lock   acquiring lock, w==0, r==0      {"resource": "test-lock", "id": "9941bb50-b73c-40fe-8a9a-b8ec4c43d6ab"}
DEBUG   lock   releaseMuCh lock returned       {"resource": "test-lock", "id": "9941bb50-b73c-40fe-8a9a-b8ec4c43d6ab"}
DEBUG   lock   updateTTL request received      {"ttl": 300000000, "wait_ttl": 0, "resource": "test-lock", "id": "9941bb50-b73c-40fe-8a9a-b8ec4c43d6ab"}
DEBUG   lock   acquired muCh and releaseMuCh mutexes   {"resource": "test-lock", "id": "9941bb50-b73c-40fe-8a9a-b8ec4c43d6ab"}
DEBUG   lock   updateTTL started       {"resource": "test-lock", "id": "9941bb50-b73c-40fe-8a9a-b8ec4c43d6ab"}
DEBUG   lock   lock/rlocl TTL was successfully updated {"resource": "test-lock", "id": "9941bb50-b73c-40fe-8a9a-b8ec4c43d6ab"}
DEBUG   lock   releaseMuCh lock returned       {"resource": "test-lock", "id": "9941bb50-b73c-40fe-8a9a-b8ec4c43d6ab"}
DEBUG   lock   updating r/lock ttl     {"resource": "test-lock", "id": "9941bb50-b73c-40fe-8a9a-b8ec4c43d6ab", "new_ttl_microsec": 300000000}


// $lock2->release()

DEBUG   lock   release request received        {"ttl": 0, "wait_ttl": 0, "resource": "test-lock", "id": "9941bb50-b73c-40fe-8a9a-b8ec4c43d6ab"}
DEBUG   lock   acquired release mutex  {"resource": "test-lock", "id": "9941bb50-b73c-40fe-8a9a-b8ec4c43d6ab"}
DEBUG   lock   lock successfully released      {"resource": "test-lock", "id": "9941bb50-b73c-40fe-8a9a-b8ec4c43d6ab"}
DEBUG   lock   releaseMuCh lock returned       {"resource": "test-lock", "id": "9941bb50-b73c-40fe-8a9a-b8ec4c43d6ab"}
DEBUG   lock   r/lock: ttl removed, callback call      {"resource": "test-lock", "id": "9941bb50-b73c-40fe-8a9a-b8ec4c43d6ab", "ttl microseconds": 10000000}
DEBUG   lock   current writers and readers count       {"writers": 0, "readers": 0, "resource": "test-lock", "deleted id": "9941bb50-b73c-40fe-8a9a-b8ec4c43d6ab"}
DEBUG   lock   deleting the last lock, sending notification    {"resource": "test-lock", "id": "9941bb50-b73c-40fe-8a9a-b8ec4c43d6ab"}
DEBUG   lock   'exists' request received       {"ttl": 0, "wait_ttl": 0, "resource": "test-lock", "id": "9941bb50-b73c-40fe-8a9a-b8ec4c43d6ab"}
DEBUG   lock   acquired muCh and releaseMuCh mutexes   {"resource": "test-lock", "id": "9941bb50-b73c-40fe-8a9a-b8ec4c43d6ab"}
WARN    lock   no such lock ID {"resource": "test-lock", "id": "9941bb50-b73c-40fe-8a9a-b8ec4c43d6ab"}
DEBUG   lock   releaseMuCh lock returned       {"resource": "test-lock", "id": "9941bb50-b73c-40fe-8a9a-b8ec4c43d6ab"}

@gam6itko gam6itko marked this pull request as draft September 9, 2023 15:55
@gam6itko gam6itko marked this pull request as ready for review September 9, 2023 22:03
@gam6itko gam6itko changed the title wip Beta Sep 9, 2023
@rustatian rustatian removed their request for review September 10, 2023 08:27
@butschster butschster merged commit 6b11b36 into 1.x Sep 15, 2023
@gam6itko gam6itko deleted the wip branch September 15, 2023 15:32
@gam6itko gam6itko restored the wip branch September 15, 2023 15:32
@gam6itko gam6itko deleted the wip branch September 15, 2023 15:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants