У меня есть процесс (cron job) в моем приложении (JEE).И у меня есть два его экземпляра на двух разных машинах.
Я хочу, чтобы это задание cron выполнялось только один раз.Я знаю, что есть много способов сделать это.Но я хочу сделать это, используя блокировку таблицы базы данных.
Итак, первое, что делается в этом процессе, - это получить LOCK для некоторой таблицы в базе данных.Если один процесс получает блокировку, то другой процесс должен немедленно прервать.
Я использую Postgresql (10.4). Это то, что я имею в своем коде
Statement statement = connection.createStatement();
statement.execute("LOCK TABLE crontable NOWAIT");
При этом я ожидаю, что когда один процесс получит блокировку, тогда другой процесс будет прерван (согласнок документации https://www.postgresql.org/docs/10/sql-lock.html)
Но в настоящее время происходит то, что другой процесс ожидает, пока блокировка не будет снята первым процессом.
Я что-то здесь упускаю?