Bug: ConsumerRecordRecords.key returns None when record key is an empty string
メンテナーはふだん 1 日以内に返信
評価
調査の方向性
Start in aws_lambda_powertools/utilities/kafka/consumer_records.py at the ConsumerRecordRecords.key logic described in the issue, then inspect the existing KafkaEventRecord.decoded_key behavior for comparison. Add regression coverage for empty, missing, and null keys; done means an empty key decodes to an empty value while missing or null keys return None. A linked pull request is already open.
索引モデルが issue の本文から書いたものです。
説明
Expected Behaviour
When a Kafka event contains an empty key ("key": ""), ConsumerRecordRecords.key should deserialize the empty string and return an empty key (e.g. "" or b""), matching Kafka semantics and KafkaEventRecord.decoded_key behavior. Only missing or null keys (None) should evaluate to None.
Current Behaviour
In aws_lambda_powertools/utilities/kafka/consumer_records.py (line 35):
key = self.get("key")
# Return None if key doesn't exist
if not key:
return None
Because if not key: performs a truthiness check rather than an identity check against None, any empty base64 string ("key": "") is treated as nonexistent and returns None.
In contrast, KafkaEventRecord.decoded_key in aws_lambda_powertools.utilities.data_classes.kafka_event correctly distinguishes between missing and empty keys:
return None if self.key is None else base64.b64decode(self.key)
Code snippet
from aws_lambda_powertools.utilities.kafka.consumer_records import ConsumerRecordRecords
data = {
"topic": "test-topic",
"partition": 0,
"offset": 100,
"timestamp": 1690000000000,
"timestampType": "CREATE_TIME",
"key": "", # Empty key representation in Kafka event
"value": "dGVzdC12YWx1ZQ==",
}
record = ConsumerRecordRecords(data=data)
# Fails: returns None instead of empty decoded key
assert record.key is not None
Possible Solution
Update line 35 of aws_lambda_powertools/utilities/kafka/consumer_records.py:
- if not key:
+ if key is None:
return None
And add unit regression tests verifying empty string key handling.
Steps to Reproduce
- Instantiate
ConsumerRecordRecordswith a dict containing"key": "". - Access
record.key. - Observe it returns
Noneinstead of deserializing the empty key.
Powertools for AWS Lambda (Python) version
latest
AWS Lambda function runtime
3.12
Packaging format used
PyPi
- 主要言語
- Python
- スター
- 3.3k
- フォーク
- 511
- 平均マージ
- 3日 4時間
- マージ済み PR(30日)
- 98
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
aws-powertools/powertools-lambda-python のほかの issue
-
Bug: POWERTOOLS_IDEMPOTENCY_DISABLED set to an empty or non-boolean value crashes every invocation対応中かも @lechakrawarthy が 2 日前に担当しました。 オープンbug good first issue help wanted idempotency
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
aws-powertools/powertools-lambda-python#8728 · コメント 4 件 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
-
Bug: Redis layer fails the invocation instead of retrying when a record expires between SET NX and GET対応中かも @coughlmao が 2 日前に担当しました。 オープンbug good first issue help wanted idempotency
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
aws-powertools/powertools-lambda-python#8727 · コメント 4 件 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
-
Bug: Redis orphan lock timeout ignores expires_after_seconds and is always 10 seconds対応中かも @CJstate が 2 日前に担当しました。 オープンbug good first issue help wanted idempotency
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
aws-powertools/powertools-lambda-python#8726 · コメント 3 件 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
-
Bug: idempotency payloads with set, frozenset or bytes fields cannot be hashed対応中かも @Neeraj111010 が 2 日前に担当しました。 オープンbug good first issue help wanted idempotency
難易度 2/5 1〜3時間 初心者へのやさしさ 80/100
aws-powertools/powertools-lambda-python#8725 · コメント 6 件 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
-
Bug: with a DynamoDB composite key, DataRecord.idempotency_key is the static partition key value対応中かも @sumedh-aerram が 2 日前に担当しました。 オープンbug good first issue help wanted idempotency
難易度 2/5 1〜3時間 初心者へのやさしさ 90/100
aws-powertools/powertools-lambda-python#8724 · コメント 3 件 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
aws-powertools/powertools-lambda-python の issue をすべて見る
似ている issue
-
Backend issue lists report in-patch warnings and out-of-patch errors as not publishable対応中かも @RaphaelFakhri が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
mozilla/code-review#3794 ·
メンテナーはふだん 1 日以内に返信
-
[oblt-aw][autodoc] Update docs that still describe the security registry as empty対応中かも @github-actions が今日担当しました。 オープン
難易度 1/5 1〜3時間 初心者へのやさしさ 85/100
メンテナーはふだん 1 日以内に返信
-
[Bug] adb backup script reports "Done" & exits 0 when the backup fails対応中かも @bhattmanthan が今日担当しました。 オープンrequest-issue-assignment
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信
-
agent-ui bug p2
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信
-
correction metadata
難易度 1/5 1時間未満 初心者へのやさしさ 72/100
acl-org/acl-anthology#10768 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信