Как мне перечислить запущенные запросы gremlin? Как я могу отменить медленные или долго работающие запросы? - PullRequest
0 голосов
/ 29 октября 2018

Большинство баз данных предоставляют пользователям механизм для отображения списка запущенных запросов и отмены их при необходимости. Это особенно полезно при завершении запросов, которые занимают много времени. Например, в MySQL вы должны сделать что-то вроде этого:

mysql>show processlist;
mysql> kill <pid>;

Как мне сделать что-то похожее на сервере gremlin? Пока единственной доступной ручкой является scriptEvaluationTimeout в конфигурации yaml, которая позволяет вам завершить ваш запрос по таймауту. Меня интересует API, который может перечислять все запущенные запросы, и API, который позволяет мне удалять запросы по идентификатору. Если это еще не поддерживается, планирует ли tinkerpop поддерживать его в более новых версиях? Что-то вроде:

g.query()
g.query('123')
g.query('123').cancel()

1 Ответ

0 голосов
/ 30 октября 2018

В Gremlin Server нет ничего, что перечисляло бы запущенные запросы. Журнал сервера, настроенный с более высоким уровнем детализации, может дать вам несколько советов, но это не очень хороший обходной путь, я думаю. Некоторые графические системы будут иметь встроенную возможность предоставлять вам эту информацию - то есть функциональность типа «медленного журнала запросов», но это не то, что TinkerPop предоставляет вам.

Что касается отмены, то согласно стандартной семантике TinkerPop Traversal должен учитывать запрос на прерывание потока. Эта семантика обеспечивается набором тестов процессов TinkerPop. Тем не менее, поставщик графов все еще должен правильно учитывать такое поведение. Gremlin Server попытается прервать обходы на основе байт-кода или сценариев, которые превышают конфигурацию scriptEvaluationTimeout на сервере, или переопределение для этого значения, предоставленного для запроса. Правильная установка этих тайм-аутов и использование провайдера, который учитывает семантику TinkerPop для отмены, - лучшая защита, которую вы имеете для обходного пути. Обратите внимание, что поставщики графов, которые просто реализуют протоколы Gremlin Server (но могут не использовать сам Gremlin Server), могут иметь различные параметры контроля времени ожидания.

Мы определенно улучшили отмену прохождения из TinkerPop 2.x в нашей текущей версии 3.x - надеюсь, для 4.x мы действительно сможем сделать это идеально.

...