Разработчик
Добрый день, спасибо за ваше мнение и дополнение.
Спасибо большое за комментарий!
По поводу механизма лока и куба. На уровне конфигурации компонента Symfony Lock настраивается хранилище (Memcached, PostgreSQL, Redis и т. д.), где лежит информация о локе, после чего мы создаем лок, который будет использовать сконфигурированное хранилище (https://github.com/Codesrc-public-ru/Examples/blob/main/Symphony%20Lock/ExternalServiceTokenProvider.php#L17).
В нашем случае используется кластерный Memcached, поэтому все поды понимают, есть в данный момент лок или нет.
По поводу поведения. Исключение при попытке взять занятый лок не бросается. В примере (https://github.com/Codesrc-public-ru/Examples/blob/main/Symphony%20Lock/ExternalServiceTokenProvider.php#L19) у нас просто блокируется выполнение и ожидается освобождение лока. Также у лока есть TTL на случай падения пода или других непредвиденных ситуаций - это позволяет избежать вечного дедлока.
Ну да, и в этом нет ничего плохого - если гипотеза не выстрелит, не придется переписывать нативный код. WebView как раз и спасает на этапе проверки, пока непонятно, стоит ли вообще вкладываться в полноценную мобильную разработку.
Добрый день, спасибо за ваше мнение и дополнение.
Спасибо большое за комментарий!
По поводу механизма лока и куба. На уровне конфигурации компонента Symfony Lock настраивается хранилище (Memcached, PostgreSQL, Redis и т. д.), где лежит информация о локе, после чего мы создаем лок, который будет использовать сконфигурированное хранилище (https://github.com/Codesrc-public-ru/Examples/blob/main/Symphony%20Lock/ExternalServiceTokenProvider.php#L17).
В нашем случае используется кластерный Memcached, поэтому все поды понимают, есть в данный момент лок или нет.
По поводу поведения. Исключение при попытке взять занятый лок не бросается. В примере (https://github.com/Codesrc-public-ru/Examples/blob/main/Symphony%20Lock/ExternalServiceTokenProvider.php#L19) у нас просто блокируется выполнение и ожидается освобождение лока. Также у лока есть TTL на случай падения пода или других непредвиденных ситуаций - это позволяет избежать вечного дедлока.
Ну да, и в этом нет ничего плохого - если гипотеза не выстрелит, не придется переписывать нативный код. WebView как раз и спасает на этапе проверки, пока непонятно, стоит ли вообще вкладываться в полноценную мобильную разработку.