Skip to content

v1.9.2

Latest

Choose a tag to compare

@NuclearAPK NuclearAPK released this 26 Jul 18:00

Внешняя компонента (Native API) для интеграции 1С:Предприятие с Apache Kafka.

Зависимости

  • librdkafka внутри компоненты обновлена до 2.15.0 (статическая линковка).

Исправлено

Ошибка "operation_timeout" is not supported for this operation в Admin-методах

  • Затрагивала ПолучитьНастройкиТопика, УстановитьНастройкиТопика, ПолучитьНастройкиБрокера, УстановитьНастройкиБрокера, ОписатьACL, УдалитьACL — вызов падал сразу на настройке опций, не доходя до запроса к брокеру.
  • Причина: librdkafka разрешает operation_timeout только для CreateTopics, DeleteTopics, CreatePartitions, DeleteRecords, ListOffsets, ElectLeaders.
  • Теперь используется request_timeout. Параметр «Таймаут» = таймаут запроса к брокеру, значения по умолчанию не изменились.

Конвертация строк 1С ↔ UTF-8

  • toUTF8String / toUTF16String конвертируют по явному диапазону (data, data + size). Буфер 1С не гарантирует нуль-терминатор — раньше возможен выход за границу буфера на длинных строках и обрезка на строках со встроенными нулями.

Текст ошибок librdkafka доходит до 1С (ПолучитьСообщениеОбОшибке)

  • Асинхронные ошибки (SASL, недоступный брокер, SSL-handshake, сбой доставки) больше не теряются при пустом КаталогЛогов — добавлен потокобезопасный слот последней асинхронной ошибки.
  • CommitOffset, ConsumeBatch, ProduceBatch, ProduceBatchWithResult, ProduceWithRetry — вместо голого Ложь пробрасывается реальная причина.
  • GetConsumerLag, GetConsumerGroupOffsets — причина берётся из rd_kafka_last_error().
  • PutAvroSchema, ConvertToAvroFormat, SetProtobufFieldFromJson, DecodeProtobufMessage — текст исключения больше не проглатывается.
  • Best-effort шаги (GetPartitionWatermarks, GetTopicConsumerGroups) не выставляют ошибку при частичном результате; PARTITION_EOF в ConsumeBatch не считается ошибкой.

Avro — упаковка time-millis

  • Поле принимает полную ISO-строку "YYYY-MM-DDTHH:MM:SS[.fff]", а не только "HH:MM:SS[.fff]" — из неё берётся временная часть. Устраняет ошибку при передаче типа Дата из 1С.

Изменено

Валидация в УстановитьПозициюЧтения / УстановитьПозицииЧтения

  • Методы возвращают Ложь при некорректных данных вместо безусловного Истина; причина доступна через ПолучитьСообщениеОбОшибке().
  • Проверяются: имя топика по правилам Kafka, номер партиции, тип аргумента, JSON и массив metadata.
  • При доступном адресе брокеров дополнительно проверяется существование топика/партиции и что смещение не выше high watermark.
  • Добавлен необязательный параметр Брокер (по умолчанию ""); адрес берётся из него, затем из bootstrap.servers / metadata.broker.list. Без адреса проверка существования топика пропускается — обратная совместимость, менять существующий код 1С не требуется.
  • УстановитьПозицииЧтения применяет позиции атомарно: при ошибке хотя бы в одной записи не применяется ни одна.

Полный список изменений: CHANGELOG.md · сравнение с v1.9.1