Завершение (милостиво) процесса MonetDB в R
Я использую MonetDB на различных платформах (например, OS X и Linux Centos) с блестящим приложением.
Трудно постоянно отключать БД, поэтому в настоящее время мой подход заключается в том, чтобы завершить блестящее приложение, не отключая БД.
Это означает, что блестящее приложение перед доступом к данным пытается остановить любой "старый" процесс с помощью:
monetdb.server.stop(pid)
Из источника команды я понимаю, что она в основном убивает процесс, связанный с pid
(что означает, помимо прочего, что пользователь, запускающий приложение, должен иметь доступ к kill
функция).
Иногда это работает нормально, но иногда, когда я пытаюсь запустить MonetDB снова, я получаю
!FATAL: GDKlockHome: Database lock '.gdk_lock' denied
Warning in socketConnection(host = host, port = port, blocking = TRUE, open = "r+b", :
localhost:50000 cannot be opened
Error in socketConnection(host = host, port = port, blocking = TRUE, open = "r+b", :
cannot open the connection
Есть ли способ избежать этой ошибки (без принудительного отключения базы данных все время, когда я использую ее в "блестящем")?
1 ответ
MonetDB действительно может занять пару секунд, чтобы завершить работу. Если новый процесс запущен на том же dbfarm
каталог тем временем, вы получите !FATAL: GDKlockHome: Database lock '.gdk_lock' denied
ошибка. Я рассматриваю возможность добавления wait
параметр для monetdb.server.stop
,
Так что пока стоит немного подождать, прежде чем сервер снова запустится. В противном случае рассмотрите возможность использования monetdbd
управлять серверами MonetDB.