Получение ошибки при удаленной отправке данных в базу данных Azure Cosmos через клиент gremlin java

Я пытаюсь проанализировать файл CSV и создать узлы и края в Cosmos db с помощью клиента gremlin-java (https://github.com/Azure-Samples/azure-cosmos-db-graph-java-getting-started).

Некоторые запросы, которые я изменил в этой программе: Для добавления данных: Отправляя этот запрос Gremlin 87246:

gV (). has ('id', 'КОНСОЛИДИРОВАННОЕ РАСПИСАНИЕ 1120 Л'). fold (). coalesce (развёртывание (), addV ('sub_schedule'). property ('id', 'КОНСОЛИДИРОВАННОЕ РАСПИСАНИЕ 1120 Л L') ') .property (' имя ',' КОНСОЛИДИРОВАННЫЙ ГРАФИК 1120 Л '))

Для создания края:

gV (). hasLabel ('родитель'). has ('id', '1120'). addE ('has'). to (gV (). hasLabel ('state'). has ('id', 'FD '))

После успешного запуска почти в течение 6 часов он дает странную ошибку:

Exception in thread "main" java.util.concurrent.ExecutionException: java.io.IOException: An existing connection was forcibly closed by the remote host
at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357)
at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1895)
at GetStarted.WriteWithOriginalCSVData.main(WriteWithOriginalCSVData.java:158)
Caused by: java.io.IOException: An existing connection was forcibly closed by the remote host
at sun.nio.ch.SocketDispatcher.read0(Native Method)
at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:43)
at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223)
at sun.nio.ch.IOUtil.read(IOUtil.java:192)
at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:380)
at io.netty.buffer.PooledUnsafeDirectByteBuf.setBytes(PooledUnsafeDirectByteBuf.java:221)
at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:899)
at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:275)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:119)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:652)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:575)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:489)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:451)
at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:140)
at java.lang.Thread.run(Thread.java:745)

Может кто-нибудь, пожалуйста, скажите мне возможные причины этого?

Чтобы упомянуть, я вызываю этот Java-клиент удаленно со своего ноутбука через открытое соединение и нажимаю на сервисы Azure (в другом месте).

Сначала я подумал, что это может быть из-за моего подключения к Интернету. Но он точно выдает ошибку, когда он выполнил несколько запросов гремлина 87-88k. Может кто-нибудь, пожалуйста, дайте мне знать, где я здесь ошибаюсь?

Вы знаете, какой запрос выполняется при закрытии? Похоже, что запрос не работает и заставляет сервер отключать от вас соединение ... Можете ли вы добавить отладку, чтобы сократить набор данных?

tim_yates 08.09.2018 20:51

нет конкретного запроса, который он не выполняет. Я запускал это 4 раза, и когда я записал, это был последний запрос, отправленный на сервер: gV (). Has ('id', '1120-L CONSOLIDATED SCHEDULE L'). Fold (). Coalesce (deploy () , addV ('sub_schedule'). property ('id', 'КОНСОЛИДИРОВАННОЕ РАСПИСАНИЕ 1120-L L'). property ('name', '1120-L CONSOLIDATED SCHEDULE L')). Но с первой попытки все прошло успешно. Итак, опять же, без особого запроса. На этот раз он обработал только до 30 тысяч запросов.

Varun Tahin 09.09.2018 05:16

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

Varun Tahin 10.09.2018 13:52
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
261
0

Другие вопросы по теме