Антон Титовец

Антон Титовец 

Open-source энтузиаст

16subscribers

4posts

DevNote #2 | О FTP и баге платформы при работе с ВК

Сегодня расскажу о новой библиотеке ОПИ, которая находится в разработке, а еще об интересном (и очень неприятном) баге платформы, который обнаружился при использовании ОПИ на Linux
Библиотека FTP
Следующей библиотекой в ОПИ будет модуль для работы с FTP(s). Да, в 1С есть поддержка FTP средствами платформы и нет, ОПИ этот функционал платформы не использует. Как и многие последние обновления, следующий релиз будет основан на внешней компоненте и, в случае с FTP, для этого было две основные причины: 1) я хочу сделать наконец нормальный модуль SFTP, который работал бы без WinSCP костыля, а без наличия обычного FTP это выглядело бы странно 2) Поддержка FTP была бы к месту в других реализациях ОПИ, где его нет из коробки - OneScript, CLI и Melezh
Но это не значит, что данный модуль FTP будет бесполезен, если вы работаете с данным протоколом в рамках 1С:Предприятие. Кроме сомнительных причин появления, там будут и вполне приятные плюшки, отсутствующие в реализации платформы: поддержка прокси через Socks4, Socks5 и HTTP (последний в платформе не поддерживается), возможность получать и загружать данные напрямую через ДвоичныеДанные, без сохранения файла на диск, выполнение произвольных (сервер-специфических) команд и пр. TLS (FTPS) конечно же тоже поддерживается, причем без потребности в OpenSSL на Linux. Работать можно в активном и в пассивном режиме

Разработка компоненты в этот раз была, на удивление, сложной и комплексной - FTP оказался не так прост, особенно с прокси и TLS. Но это в прошлом: думаю, успею закончить и нормально обкатать новые функции к концу августа или началу сентября. Следите за обновлениями!

Баг при работе с компонентами
Много работы было также проделано, чтобы обойти очень неприятный баг платформы на Linux. Как оказалось, любая компонента может аварийно завершить свою работу, если попытаться передать туда (параметром) или получить обратно (результатом) данные свыше определенного размера. Я говорю "может завершить", потому что это случается не в 100% случаев

Так, например, для теста я написал компоненту, которая просто возвращает двоичные данные переданного в нее (числом) размера, и повесил получения 100 КБ на кнопку внешней обработки. Первый раз упало на 5 нажатиях подряд, в следующий - на 20. Остальные падения при нажатиях были где-то между этими значениями

В целом, я попробовал много разных способов запуска для проверки: циклы, динамическое увеличение размеров, фиксированные размеры разной величины и пр. В итоге могу сказать, что особенной системы в этих падениях нет и все они довольно рандомные: значение большего размера может пройти несколько раз подряд, а меньшего - упасть сразу, может вообще не падать 100 раз подряд, а потом падать каждую итерацию и все в таком духе. Но есть и хорошая новость: 30 КБ видимо никогда не падает! Я запускал несколько раз получение 30 КБ двоичных данных в бесконечном цикле и он не падал, пока я сам его не останавливал. А увеличение буквально всего на 20 КБ - до 50, уже приводило к падению через некоторое количество итераций  

В итоге все, что связано с обработкой данных в ВК на Linux теперь работает через временные файлы, чтобы избежать этих падений. Sad but true
P.S. Кстати, узнал я об этом баге благодаря тому, что добрый человек скинул скрин ветки партнерского форума - там эта проблема уже поднималась в 2024 году. Полную историю нахождения и подробности исправления данной проблемы в ОПИ, если интересно, можно почитать в Issues #72

UPD: Оказывается, это актуально только при подключении компоненты в режиме Изолированно. Если указать НеИзолированно, то проблема исчезает
Ну, а пока все!
Если вы здесь впервые, но уже пользуетесь какими-либо моими проектами и хотите их поддержать, попутно узнавая о процессе разработки, то буду рад вашей подписке. Тем, кто уже подписан, большое спасибо за поддержку!
Спасибо за внимание!
Subscription levels4

На кофе

$2.83 per month
Если вы пользуетесь какими-либо моими открытыми разработками и просто хотите легко+непринужденно поддержать эти начинания - данная подписка для вас. Любая помощь очень важна, спасибо вам за это!
P.S. Открывает доступ к скрытому контенту Boosty

На расходы

$7.1 per month
Этот уровень поддержки уже более серьезный. Он открывает доступ в закрытый Telegram-чат, где вы можете задать мне любой интересующий вас вопрос. Мне, в свою очередь, каждая такая подписка серьезно помогает снизить ежемесячные расходы на содержание проектов. За что вам большое спасибо!
+ chat

На развитие

$21.3 per month
Подписка для меценатов. Также, как и предыдущая, открывает доступ к закрытому чату в Telegram. За такую неоценимую помощь буду стараться рассматривать вопросы уважаемых господ в первостепенном порядке
+ chat

Спонсорство

$107 per month
Специальная подписка для компаний, касающаяся OpenIntegrations (ОПИ) и Melezh. Приоритетная поддержка в личных сообщениях и логотип компании в списке спонсоров на страницах этих репозиториев, а также главной странице сайта openintegrations.dev (при желании)
+ chat
Go up