Gremlin Cluster / Connection не сбой с неправильными учетными данными - PullRequest
0 голосов
/ 23 мая 2018

Требования к коду:

  • Пользователь обращается к службе по шаблону URL-адреса / database // collection // entity
  • Java пытается подключиться к этой конкретной базе данных и коллекции через Gremlin.,Если соединение не установлено, верните ошибку пользователю
  • . Если соединение было успешным, Java запускает предварительно созданный запрос и возвращает результат пользователю.

Проблема, с которой я столкнулся: с помощью учебника, расположенного по адресу https://github.com/Azure-Samples/azure-cosmos-db-graph-java-getting-started/blob/master/src/GetStarted/Program.java,, я создаю кластер, за которым следует клиентский объект, используя правильные учетные данные;в том случае, когда все конфигурации верны, все работает без проблем.Однако, если я изменю какой-либо параметр, DATABASE_ID, COLLECTION_ID или PASSWORD, код будет продолжаться после создания кластера и после кластера, на котором выполняется connect (), пока он не попытается запустить «client.submit (query)», где он вернет исключение NullPointerException,

Вопрос : есть ли метод, встроенный в кластер или объект клиента, который возвращает, если он успешно прошел аутентификацию.

КОНСОЛЬ КОДА:

DATABSE_ID:PURPOSELY_WRONG_DB
COLLECTION_ID:PURPOSELY_WRONG_COLLECTION
PASSWORD:PURPOSELY_WRONG_PASSWORD_TO_TEST_IF_CONNECTION_THROWS_ERROR
QUERY:g.V().count()
START QUERYING GREMLIN SERVER
AT THIS POINT I HAVE PASSED CLIENT.CONNECT()
ABOUT TO SUBMIT THE QUERY.....
java.lang.NullPointerException: null
        at org.apache.tinkerpop.gremlin.driver.Handler$GremlinResponseHandler.channelRead0(Handler.java:239)
        at org.apache.tinkerpop.gremlin.driver.Handler$GremlinResponseHandler.channelRead0(Handler.java:195)
        at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:367)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:353)
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:346)

1 Ответ

0 голосов
/ 24 мая 2018

Протокол Gremlin Server использует аутентификацию на основе SASL , и аутентификационное подтверждение запускается при отправке первого запроса.

Базовая последовательность квитирования:

  1. Сервер получает запрос на новое соединение.
  2. Сервер отправляет запрос проверки подлинности.
  3. Клиент отправляет проверку подлинностиответ с учетными данными.
  4. Сервер проверяет учетные данные и либо отвечает результатами первоначального запроса, либо возвращает неверный ответ кредитов.

Однако исключение нулевого указателя не ожидается.

Можете ли вы предоставить:

  • Версия используемого вами клиента gremlin-java?
  • Пример, который повторяет проблему.
  • , если этовозможно, ответное сообщение, которое GremlinResponseHandler пытается прочитать?

См. Также ссылку на запрос / ответ Гремлин здесь .

...