Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Зависание при порционном чтении двоичных данных из TCP-соединения #1471

Open
salexdv opened this issue Nov 15, 2024 · 0 comments

Comments

@salexdv
Copy link

salexdv commented Nov 15, 2024

Опишите ошибку
Изначально столкнулся с проблемой в winow @Nivanchenko
Некоторые post запросы оставались висеть в статусе pending

image

В процессе изучения проблемы выяснилось, что winow порционно вычитывает двоичные данные из объекта TCPСоединение.
До конца не разобрался, но похоже, что зависание происходит, если размер буфера, передаваемый для чтения меньше размера двоичных данных.
Если читать двоичные данные без указания размера буфера или увеличить размер буфера, то зависания не происходит.

Воспроизведение ошибки

Для воспроизведления проблемы на голом OneScript сделал следующий скрипт

ТСПСервер = Новый TCPСервер(8081);
ТСПСервер.Запустить();		
Сообщить("Сервера запущен");

РазмерБуфера = 1024;

Пока Истина Цикл

	Соединение = ТСПСервер.ОжидатьСоединения();
	Данные = Соединение.ПрочитатьДвоичныеДанные(РазмерБуфера); // <= тут зависает
	Сообщить(Данные.Размер());
	Соединение.ОтправитьСтроку("ok");

КонецЦикла;

Данные в порт кидаю так

image

Пример данных

{
    "file": "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111",
    "text": "222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222"
}

При увеличении размера буфера для чтения зависания не происходит.
Во время зависания в диспетчере задач наблюдается такая картина

image

Окружение

  • ОС: Windows 10 Pro 10.0.19045
  • Версия: 1.9.2.10:
akpaevj added a commit to akpaevj/OneScript that referenced this issue Dec 6, 2024
…и использовании и достижении заданного лимита
EvilBeaver added a commit that referenced this issue Dec 13, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant