Skip to content

1.9.3

Latest

Choose a tag to compare

@NuclearAPK NuclearAPK released this 19 Aug 08:37

Внешняя компонента Native API для 1С:Предприятие, статическая сборка со всеми зависимостями.

Артефакты

Файл Платформа Требования
SimpleKafka1C64_1_9_3.dll x64 Windows системные DLL (bcrypt, crypt32, ws2_32, advapi32, iphlpapi, secur32, kernel32, user32, dbghelp)
SimpleKafka1C64_1_9_3.so x64 Linux glibc ≥ 2.38 — Ubuntu 23.10/24.04 и новее

Внутрь слинкованы librdkafka, OpenSSL, curl, protobuf, abseil, boost, avro-cpp, fmt, zlib, zstd, lz4, snappy, cyrus-SASL, libuuid. На Linux дополнительно статически подключён libstdc++; внешними остаются только libc, libm, libgcc_s и ld-linux.

Для RHEL 9 / CentOS Stream 9 / AlmaLinux 9 / Rocky 9 (glibc 2.34) собирайте из docker/rhel9sh docker/rhel9/build.sh.

Что изменилось

64-битные смещения. Смещение Kafka сужалось до int32 на границе с 1С: ПолучитьСмещениеСообщения возвращало (int32_t) offset, а ЗафиксироватьСмещение, ПрочитатьСообщениеПоСмещению и УстановитьПозициюЧтения читали параметр через std::get<int32_t>. На топиках со смещением выше 2 147 483 647 это давало неверные значения и молчаливую повторную обработку либо пропуск сообщений. Добавлен общий конвертер variantToInt64: принимает целое и VTYPE_R8 (1С маршалит значения свыше int32 как число с плавающей точкой), отвергает дробные значения, NaN, бесконечность и величины свыше 2^53 с внятным текстом ошибки вместо bad_variant_access.

Причина отказа доставки доходит до 1С. Отчёт о доставке писал Delivery failed: <errstr> в слот асинхронных ошибок, а produceAndWaitResult затирал его заглушкой Not delivered. See log for details. Теперь текст отчёта дополнен кодом ошибки, топиком и партицией и не перекрывается: ОтправитьСообщениеСОжиданиемРезультата возвращает, например, Delivery failed: Broker: Topic authorization failed (topic=my-topic, partition=-1, code=29). Слот ошибки очищается перед каждой отправкой, поэтому причина отказа предыдущего сообщения не выдаётся за причину отказа текущего. Числовой вердикт доставки (2, 1, 0, -1) не изменился.

Сборка. Добавлен docker/rhel9 — контейнерная сборка .so под RHEL 9 со статической линковкой всех зависимостей (макс. требуемая версия символов GLIBC_2.34).

Полный список изменений версии — в CHANGELOG.md.