본문 바로가기
Data PipeLine/Kafka

[Kafka] 3.2.x Release note 주요 내용 정리

by 연습장이 2024. 2. 14.
728x90
반응형

목적

  카프카 브로커의 버전 업그레이드 시 발생할 수 있는 사이드 이펙트를 사전파악 및 대응, 신기술에 대한 도입 검토하기 위함

Release note Clause

3.2.0

Notable Changes

  • 프로듀서에 대한 Idempotence 설정이 다른 설정과 충돌하지 않으면 기본적으로 활성화됨. 3.0.0과 3.1.0에서는 버그가 있어 이 기능을 막았고 명시적으로 enable.idempotence를 true로 설정했어야 적용되었음. 3.0.1과 3.1.1, 3.2.0에서는 기본적으로 동작을 함
  • 카프카가 보안 이슈로 log4j와 slf4j-log4j12를 reload4j와 slf4j-reload4j로 교체함
  • 기본 classpath에서 예시 커넥터로 FileStreamSourceConnector와 FileStreamSinkConnector가 제거됨. 사용하고 싶으면 CLASSPATH=./libs/connect-file-3.2.0.jar ./bin/connect-distributed.sh로 지정할 것

New Feature

  • -

Improvement

  • 카프카 소스 커넥트를 idempotent하게 만듦
  • 리스너마다 num.network.threads를 설정할 수 있도록 함
  • Acceptor에 대한 listen 백로그 사이즈를 조정할 수 있는 설정을 추가함
  • 기본 store type을 지정할 수 있는 설정을 추가함
  • 별도 활성화된 타스크가 없는 스레드에 대기중인 작업 할당에 대한 우선순위를 조정할 수 있음
  • 중지된 트랜잭션으로 인해 포지션이 증가된 경우 컨슈머가 poll로부터 반환되로록 허용함
  • 소스 타스크가 프로듀서 예외를 처리하도록 허용함
  • recordMetadata를 StateStoreContext에 추가함
  • upgrade doc를 개선함
  • log.cleaner.delete.retention.ms 파라미터에 대한 최적화를 코멘트함
  • JoinGroupRequest와 LeaveGroupRequest의 이유를 추가함
  • 아파치 카프카 빠른시작 가이드에 카프카 커넥트 시작에 대한 단계를 추가함
  • KRaft에 대한 브로커 설정을 검증함
  • TimestampConverter SMT 내 서로 다른 unix precisions에 대한 지원을 추가함
  • delete interval 설정을 추가함
  • 카프카 콘솔 프로듀서 내에 null 값으로 레코드를 프로듀싱하는 것을 허용함
  • 클린하게 셧다운하고 재시작 후에 비어있는 활성 세그먼트가 회복을 트리거할 수 있도록 함
  • KRaft authorizer를 구현함
  • 리더로부터 정의된 선호하는 읽기 레플리카가 정의되었다면 컨슈머로부터의 Fetch가 즉시 반환되도록 함

Bug

  • 카프카 스트림즈 역직렬화가 에러 레코드에 대한 커밋되지 않은 오프셋을 처리하는 버그가 수정됨
  • 프로듀서가 음수 파티션 ID로 요청을 전송하는 버그가 수정됨
  • 검색 가능한 UNKNOWN_TOPIC_OR_PARTITION 때문에 자동 커밋이 지연을 야기하는 버그가 수정됨
  • 미러메이커 설정 속성 중에 config.properties.exclude가 정상적으로 동작하지 않는 버그가 수정됨
  • KRaft에서 동적으로 브로커 로그 레벨 변경을 할 수 없는 버그가 수정됨
  • 스트림즈가 downgrade 상태에서 리밸런싱이 일어나면 store가 다시 할당되고 처음부터 복원될 수 있는 버그가 수정됨
  • 커밋할 오프셋이 없는 소스 타스크에 대한 로그 메시지가 쓸데 없이 자주 출력되는 버그가 수정됨
  • DynamicBrokerConfig 내 경쟁 상태가 발생하는 버그가 수정됨
  • 오프셋이 비어있는데도 KafkaConsumer.close가 인증 예외를 던지는버그가 수정됨
  • Fetch 스레드 풀의 크기를 조정할 때 파티션이 올바르게 분할되지 않는 버그가 수정됨

Task

  • RocksDB를 6.27.3으로 업그레이드함
  • KRaft 컨트롤러에 자동 선호되는 리더 선출을 구현함

Wish

  • 카프카 콘솔 프로듀서 내에 카프카 헤더를 기입할 가능성이 있음

Test

  • KRaft 모드 내에서 트랜잭션에 대한 시스템 테스트가 가능함

Sub-task

  • RocksDB 버전 때문에 추가할 수 없었던 RocksDB 메트릭을 추가함
  • 'PartitionsWithLateTransactionsCount' 에 대한 메트릭을 추가함
  • GetOffsetShell 내 max timestamp를 지원함

3.2.1

Notable Changes

  • OAuth 토큰 새로고침 관련 문제가 수정됨. 토큰을 새로 고치는 동안 카프카 클라이언트가 초기 인증 시 존재했던 SASL 확장을 포함하지 않아 인증 실패가 발생했는데 이제 조치됨
  • 커넥트에서 errors.tolerance 설정 문제가 수정됨. 소스 커넥터가 errors.tolerance=all을 사용하고 커넥트의 프로듀서가 소스 레코드를 토픽에 성공적으로 보내지 못하면 오류가 제대로 보고되고 커넥터가 계속되지만, 커넥트는 해당 소스 커넥터에 대한 소스 오프셋을 커밋하지 않고 메모리 누수로 인해 결국 OOM과 함께 커넥트 워커가 실패하는 버그였음
  • 협력적 리밸런스의 회귀가 수정됨

New Feature

  • -

Improvement

  • 와이어에 전송되는 'reason' 필드의 길이가 제한됨

Bug

  • 디스크가 꽉차 충돌이 일어날 경우 회복 후에 데이터 유실이 일어나는 버그가 수정됨
  • KRaft 모드에서 CreatePartition 요청에 대해 validateOnly 요청 필드가 동작하지 않는 버그가 수정됨
  • AlterConfig APIs 로부터 일관적이지 않은 에러 코드가 반환되는 버그가 수정됨
  • JoinGroupRequestData인 'reason'이 너무 긴 버그가 수정됨
  • 재시도 가능한 에러를 받아도 alterISR 요청이 재시도 하지 않는 버그가 수정됨
  • onJoinPrepare 내 커밋 오프셋에 대해 협력적 리밸런싱이 일어나는 동안 컨슈머가 멈추는 버그가 수정됨
  • error.tolerance가 all로로 설정되었다면 소스 타스크가 오프셋을 커밋하지 않고 메모리 누수가 될 수 있는 버그가 수정됨

Task

  • -

Test

  • -

Sub-task

  • -

3.2.2

Notable Changes

  • -

New Feature

  • -

Improvement

  • -

Bug

  • KRaft 내 password 설정에 대해 동적 설정 갱신이 실패하는 버그가 수정됨
  • KRaft 내 패스워드 설정이 plaintext로 로깅되는 버그가 수정됨

Task

  • -

Test

  • -

Sub-task

  • -

3.2.3

Notable Changes

  • -

New Feature

  • -

Improvement

  • -

Bug

  • -

Task

  • -

Test

  • -

Sub-task

  • -

참고

728x90
반응형