Анализатор ошибок ЕГАИС и УТМ отраженных в логах транспорта посредством «УС Лэнд:ЕГАИС» : КИС Lack & УС Land
Просматривая форум ФСРАР обнаружил диалог по проблеме, которую посчитал новой и решил добавить в анализатор логов утилиты «УСЕга», но оказалась, что она «старая». что впрочем вызвало ещё больше «возмущения» : в теории грамотные специалисты, наверное пытались найти информацию в рунет, большая производственная компания. решение проблемы в течении 2 дней , а могли просто проверить логи при помощи данной бесплатной утилиты.
При создании отчета о производстве с количеством ЦИ приблизительно в 250 000 возникла такая ошибка. Разбил на меньшее количество, все зафиксировалось. Вопрос — есть ли ограничение по количеству ФСМ в одном отчете о производстве?
В логе transport_info.log обнаружена ошибка:
ERROR es.programador.transport.online.b — [OptFuture] Ошибка проверки
java.lang.OutOfMemoryError: Java heap space
В подобных случаях мы рекомендуем увеличить объем выделяемой для JVM памяти. Что Вы и сделали.
— остановить службу транспорта
— деинсталлировать службу транспорта UninstallDaemon
— в файле установки службы выставить параметры —JvmMs 500 —JvmMx 1000 (добавлять нужно после —JvmOptions)
— установить службу с новыми параметрами JVM InstallDaemon
Установка и удаление службы производится из папки UTMtransporterbin.
Пропустил данный файл через анализатор логов:
Через минуту программа для ЕГАИС «УС Лэнд:ЕГАИС» провела диагностику и дала рекомендации по решению проблемы завода:
Во вложении дан лог транспорта УТМ, размещенный в вопросе к службе поддержки ФСРАР.
P.S. В общем предполагалось добавление в анализатор. Ну и ладно, по совету специалистов форума в данную тему буду размещать новые и типичные типы ошибки ЕГАИС, которые будет понимать анализатор логов УТМ программы «УСЕга»
Вложения
l1.7z (62.1 Кб, 98 просмотров) |
Сейчас закончилась «лафа» пополнения списка ошибок УТМ и приходится проверять каждое «неизвестное» сообщение в закрытом разделе форума ФСРАР. Вот и свежий диалог:
В. Добрый день, возникла ошибка javax.net.ssl.SSLHandshakeException, не можем принять-отправить документы
О. Рекомендуем перезаписать RSA-сертификат
В. Успешно перезаписали сертификат, ошибка та же. Обновленный лог во вложении
О. Данная ошибка возникает из-за того что невозможно установить SSL соединение с сервером. Ошибка может возникать из-за локальных настроек Вашей сети (фаерволы, антивирусы). Также может быть связано с RSA ключом, или при соединении по протоколу RDP
Скачал, открыл лог транспорта, прогнал через анализатор. Аж на этот лог два типа ошибок высвечивает программа:
З.Ы. Посмотрел по профилю . Вопрошающий представитель крупной торговой сети. Значит знает об «УС Лэнд:ЕГАИС», но с упорством достойным «уважения» предпочитает огромные потери бизнеса. Лишь бы с этой программой не связываться — привет теме » Почему в каждом магазине, в не зависимости от используемой УС должна стоять программа для ЕГАИС УС Лэнд:ЕГАИС «: https://olegon.ru/showthread.php?t=29911 Впрочем и на Olegon.ru таких «специалистов» большинство?
Вложения
transport_info.zip (38.5 Кб, 37 просмотров) |
справедливости ради надо заметить, что такие ошибки могут быть вообще не связаны с сертификатами и программами на стороне розницы.
OlegON ➤ справедливости ради надо заметить, что такие ошибки могут быть вообще не связаны с сертификатами и программами на стороне розницы.
В рекомендациях для специалистов указаны большинство причин, не только проблемы Rsa… По сути, если СПЕЦИАЛИСТ наткнулся на какие-то проблемы УТМ, ЕГАИС, оборудование, … прогнал «ситуацию» через анализатор логов, то бы МОМЕНТАЛЬНО восстановил работу бизнеса. Только зачем ему это?
Наконец «нарисовалась» проблема, которую почти не ловит анализатор логов от «УС Лэнд:ЕГАИС» и точно не даёт полной рекомендации по её разрешению. Оставлю здесь, как задачу для себя на будущее. Что на данный файл лога УТМ «кажет» «УСЕга»:
Не уходят исходящие документы ЕГАИС. Не можем найти причину.
Проведен анализ лог-файлов, обнаружены множественные ошибки:
ERROR es.programador.transport.o — Ошибка отправки оптового документа
java.io.IOException: com.sun.xml.internal.ws.client.ClientTransportException: HTTP transport error: java.net.SocketTimeoutException: Read timed out
at es.programador.a.c.a(Unknown Source)
at es.programador.a.c.a(Unknown Source)
Проверьте доступы:
Порт 443
documents-utm.egais.ru (documents-test.utm.egais.ru) — все предметные документы
cheques-utm.egais.ru (cheques-test.utm.egais.ru) — чеки
queries-utm.egais.ru (queries-test.utm.egais.ru) – справочники
askp-utm.egais.ru (askp-test.utm.egais.ru) – файлы АСКП
Адрес для он-лайн проверки чеков в процессе продажи/возврата:
utm.egais.ru:8443/BarcodeReq/check ()
Адрес для он-лайн проверки оптовых документов: doc-utm.egais.ru:8443/barcodereq (doc-
test.utm.egais.ru:8443/barcodereq)
Адрес для проверки наличия входящих документов: ask-utm.egais.ru:8443/check/utm/incoming
(ask-test.egais.ru:8443/check/utm/incoming)
Адрес для получения данных для метода контроля поштучных остатков организации в режиме
оффлайн filter-utm.egais.ru:8443/filter (filter-test.egais.ru:8443/filter)
Необходимо предусмотреть мероприятия по организации доступа к указанным ресурсам из
внутренней сети предприятия.
Обращаем внимание, что в настройках межсетевых экранов нужно использовать DNS-имена,
а не IP-адреса.
Особенно, обратите внимание на
documents-utm.egais.ru (documents-test.utm.egais.ru) порт 443 — все предметные документы
queries-utm.egais.ru (queries-test.utm.egais.ru) порт 443– справочники
Internal exception java io ioexception программа на вашем хост компьютере разорвала подключение
При вызове метода Close() столкнулся со следущей проблемой:
На сервере есть следущий код, предназначенный для принятия запроса от клиента с последующей обработкой:
Так же есть функция для отключения:
При вызове данной функции клиентом все работает замечательно, а вот при попытке вызова данной функции со стороны сервера (допустим при нажатии кнопки) появляется следущий Exception:
System.IO.IOException: Unable to read data from the transport connection: Программа на вашем хост-компьютере разорвала установленное подключение. —> System.Net.Sockets.SocketException: Программа на вашем хост-компьютере разорвала установленное подключение
at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
— End of inner exception stack trace —
at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
at System.IO.Stream.ReadByte()
at System.IO.BinaryReader.ReadByte()
at System.IO.BinaryReader.Read7BitEncodedInt()
at System.IO.BinaryReader.ReadString()
at Server.Client.RunClient() in C:Documents and Settings. . ServerForm1.cs:line 359
Line 359: string message = sReader.ReadString();
Собственно я прикрасно понимаю, что программа в момент вызова Close(), ожидает прихода с сервера очередной команы и именно из за этого возникает Exception. Возможно требуется вызов доп метода перед вызовом Close(), только вот не как не могу найти его, если кто знает/имеет идеи как избавиться от данного Exception’а прошу помочь.
Заранее благодарен.
От: | Morpheus_ |
Дата: | 23.02.07 10:53 |
Оценка: |
Здравствуйте, Requiem, Вы писали:
R>System.IO.IOException: Unable to read data from the transport connection: Программа на вашем хост-компьютере разорвала установленное подключение. —> System.Net.Sockets.SocketException: Программа на вашем хост-компьютере разорвала установленное подключение
R>Собственно я прикрасно понимаю, что программа в момент вызова Close(), ожидает прихода с сервера очередной команы и именно из за этого возникает Exception. Возможно требуется вызов доп метода перед вызовом Close(), только вот не как не могу найти его, если кто знает/имеет идеи как избавиться от данного Exception’а прошу помочь.
Не очень понятно в чем заключается проблема, этот exception появляется при попытке чтения из сокета соединение с которым уже закрыто.
Возможно здесь речь идет о том что сервер сразу после отправки пакета закрывает соединение, а клиент не успевает его принять? Если так, то у сокета есть метод Shutdown, его нужно вызывать перед Close, тогда к моменту вызова Close все отправленные до этого данные будут гарантировано доставлены до закрытия соединения
От: | Requiem |
Дата: | 23.02.07 11:33 |
Оценка: |
Здравствуйте, Morpheus_, Вы писали:
M_>Не очень понятно в чем заключается проблема, этот exception появляется при попытке чтения из сокета соединение с которым уже закрыто.
M_>Возможно здесь речь идет о том что сервер сразу после отправки пакета закрывает соединение, а клиент не успевает его принять? Если так, то у сокета есть метод Shutdown, его нужно вызывать перед Close, тогда к моменту вызова Close все отправленные до этого данные будут гарантировано доставлены до закрытия соединения
Данная функция может быть вызвана в двух случаях:
1. если клиент отсылает на сервер команду завершить работу (000002):
тоесть происходит вызов данной функции, в процессе которой флаг Accept устанавливается в положение false, поток завершается и все прекрасно работает (на сервере).
2. воторой случай вызов данной функции происходит допустим при обработке нажатия на кнопку (на сервере).
В данном случаае вызов функции осуществляется следующим образом:
Disconnect(true); // true, указывает что необходимо отправить клиенту комманду на отключение.
Во время вызова данной функции сервер ожидает прихода очередной (какой либо) команды от клиента:
string message = sReader.ReadString();
Проблема заключается в том, что при вызове Close() прочесть что либо из сокета соед. с которым уже закрыто с помощью BinaryReader уже не возможно и соответственно появляется данный exception сообщающий что «Программа на вашем хост-компьютере разорвала установленное подключение.»
Я думаю что нечего страшного в этом нету, но мне крайне не нравится сам факт появления данного исключения. Соответственно вопрос стоит в том, что возможно пред методом Close() требуется вызвать еще какой нибудь метод, который прекратит ожидание чтения с помощью BinaryReader?
От: | Requiem |
Дата: | 23.02.07 11:38 |
Оценка: |
метод Shutdown уже использую, добавил после написания основного сообщения, решил одну из многочисленных проблем, но не появление данного exception’а.
В любом случае спасибо за помощь.
От: | Morpheus_ |
Дата: | 23.02.07 15:14 |
Оценка: |
Здравствуйте, Requiem, Вы писали:
R>2. воторой случай вызов данной функции происходит допустим при обработке нажатия на кнопку (на сервере).
R>В данном случаае вызов функции осуществляется следующим образом:
R>Disconnect(true); // true, указывает что необходимо отправить клиенту комманду на отключение.
R>Во время вызова данной функции сервер ожидает прихода очередной (какой либо) команды от клиента:
R>string message = sReader.ReadString();
R>Проблема заключается в том, что при вызове Close() прочесть что либо из сокета соед. с которым уже закрыто с помощью BinaryReader уже не возможно и соответственно появляется данный exception сообщающий что «Программа на вашем хост-компьютере разорвала установленное подключение.»
после вызова Close делать чтолибо с сокетом уже нельзя, правда во втором фреймворке появились какието методы для того чтобы заново открыть сокет, но я этим не пользовался.
Ошибка в консоли
С того момента как перешёл на 18, в консоли зачастила следующая ошибка «VIKA lost connection: Internal Exception: java.io.IOException: Error while read(. ): Connection reset by peer», как я могу понимать эта ошибка блокирует игроков и выкидывает их при попытке залогинится. Кто нибудь сталкивался с подобной ошибкой ?
Возможно у тебя какие то плагины не подходят под версию сервера,выкидывать может из за старого плагина AuthMe (Это очень частая проблема)
Как избежать этого исключения java.io.IOException: на устройстве не осталось места
Если мое пространство заполнено, я иногда получаю следующее исключение
Есть ли способ избежать этого в Java. Я имею ввиду не звонить писать если нет места
- а try..catch блок должен сделать свое дело .
- 1 java.io.IOException является общим, я думаю, может быть выброшено по любым другим причинам Верно .
- 1 Вы можете проверить сообщения. В любом случае вам следует убедиться, что у вас всегда достаточно места.
- Во-первых, нецелесообразно надежно избегать получения этой ошибки. Если вы знаете, сколько места на диске вам нужно, вы можете сначала проверить, доступно ли место, но вы все равно можете получить сообщение об ошибке, если другая программа также записывает файл. Большинство программ просто справляются с этим каким-то образом, когда получают ошибку.
Java 7 NIO предлагает FileStore класс, чтобы проверить доступный размер
Очевидно, вы все еще можете получить IOException поскольку ничто не является атомарным, и другие процессы могут использовать один и тот же диск, имейте это в виду и обрабатывайте исключение соответствующим образом.
java.io.IOException: grpc потерпел неудачу
Когда я использую вызов getFromLocationName, я получаю IOException с описанием «grpc failed».
Код, который побежал
Ошибка выводов консоли:
Версия Android SDK (уровень API): 25
Плагины для Android Studio обновлены.
Кажется, проблема устранена, вот мое решение.
Сбой геокодера SomeTimes, если широта и долгота содержат более 3 десятичных знаков, или можно сказать, что геокодер не может декодировать все значения широты и долготы. вам нужно ограничить широту и долготу до 3 десятичных знаков. полный код
Это сработало для меня.
Сбой геокодера SomeTimes, если широта и долгота содержат более 3 десятичных знаков, или можно сказать, что геокодер не может декодировать все значения широты и долготы. вам нужно ограничить широту и долготу до 3 десятичных знаков.
Кажется, я решил эту проблему, открыв верхнюю панель инструментов телефона и просто переключившись между Wi-Fi и сетью, я предполагаю, что операционная память на всех виртуальных устройствах установлена на 2 ГБ ОЗУ, и поиск местоположения просто использует слишком много, поэтому я увидел пропускать кадры и местоположение без возможности поиска. Так что, если он сбрасывает эту ошибку, просто переключитесь с Wi-Fi на сеть и обратно.
Об этой проблеме уже сообщалось, вы можете найти другие сообщения в стеке, рассказывающие об этом. Здесь есть комментарий к проблеме Google с некоторыми из различных причин сбоя геокодера. Я советую вам окружить свою часть кода попробовать и поймать, чтобы ваше приложение не останавливалось.
AOA ! Поверните Режим устройства Gps на (только GPS) момент другого варианта, а затем попробуйте .
Я думаю, что это зависит от расположения устройства. потому что карта Google иногда не работает должным образом в некоторой области. Я из Ирана, и у меня также была эта проблема на реальном устройстве и эмуляторе. Через некоторое время я решил использовать приложение vpn на реальном устройстве и эмуляторе. потому что приложение vpn изменило мой IP-адрес.
Я столкнулся с этой проблемой, когда получал список адресов с помощью метода geocoder.getFromLocation (), проблема в том, что получение списка адресов по широте, долготе занимает время или на некоторых медленных устройствах это занимает больше времени, а иногда это также дает мне java-io- IOException — КПГР — не удалось.
Я исправляю эту проблему с помощью Rx Java.
Позиция вызова
Метод ViewModel
Это происходило и на моем телефоне Samsung S7 Edge с установленным Oreo. Это происходило только тогда, когда у меня был включен режим полета (не всегда — значит, что-то могло быть кэшировано в некоторых точках). Я не исследовал внутренности Geocoder, но я предполагаю, что для получения информации требуется какое-то подключение (это также объясняет, почему это происходит так часто на эмуляторах). Для меня решением было проверить состояние сетевого подключения и вызывать его только при status != NETWORK_STATUS_NOT_CONNECTED .
Для этого вы можете реализовать широковещательный приемник, который будет прослушивать любые изменения статуса в сети.
Настройте приемник трансляции для обработки трансляции
Я сталкиваюсь с этой проблемой на устройстве Android 4.4.2 несколько раз. Для меня решение состоит в том, чтобы просто перезагрузить телефон. Нет обновления кода нет Android Studio удалить.
Может быть, у вас есть эта проблема только в Genymotion и эмулятор андроид студии. Я столкнулся с той же проблемой с Genymotion и Android Studio Emulator, а затем я проверил его в Android реального устройства. Это работает хорошо для меня. Вы проверяли это на реальном устройстве?
Сегодня (2017-09-16) моя Android Studio (2.3.3) получила обновление для сервисов Google Play до ревизии 44 . Проблема была исправлена позже. Никаких изменений кода или настроек с моей стороны.
Как пишет Google, вы не должны вызывать этот метод в потоке пользовательского интерфейса
Я исправил эту проблему, запустив эту операцию в новом Thread , а затем, если мне потребуется обновить какое-либо представление пользовательского интерфейса, я сделаю это на runOnUiThread
Наконец-то я понял, как это работает, используя следующую конфигурацию для SDK версии 25, Инструменты сборки и эмулятор API.
Также используется Google API версии 11.0.2.
По своему опыту могу сказать, что эта ошибка вызывается методом Geocoder getFromLocation() . Так что не делайте следующее:
- Не вызывайте этот метод в главном потоке. Это приведет к зависанию пользовательского интерфейса, и в случае сбоя произойдет что-либо, что зависит от результата этого метода. Разберись с этим делом.
- Когда нет подключения к Интернету, снова IOExeption будет брошен. Опять же, все, что зависит от результата этого метода, будет аварийно завершено. Разберись с этим делом.
В моем случае я просто включил (разрешение предоставлено) настройку Положение из приложения.
Я могу воспроизвести эту проблему (java.io.IOException: сбой grpc), когда на моем реальном устройстве нет подключения к Интернету.
Я испытал ту же проблему и не знал, где проблема. Вообще . До недавнего времени я начал замечать, что эта проблема появилась на реальном устройстве, когда я настроил прокси. Когда я использовал charles на MAC, с этим проблем не было, но когда я начал использовать MITM в Linux, эта проблема начинала появляться каждый раз, без исключения. Вероятно, нужно настроить MITM дополнительно. Но суть в том, что если вы отключите свой прокси, у вас все будет хорошо.
Так что посмотри на это, может быть.
Это работает для меня, если представить Geocoder как синглтон для приложения, а не создавать его каждый раз. Обязательно вызовите Geocoder.getFromLocationName () из рабочего потока.
В Wi-Fi соединение работает нормально, но в 3g или 4g соединение не удается.
По состоянию на август 2019 года я все еще получаю это время от времени, когда отслеживаю свой собственный http-трафик через прокси. Выключите и проблема исчезла.