apache / apache/pulsar-client-python

[Bug] Segmentation fault when properties exceed ~100kb

未关闭
#223 6 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
Python
星标
75
派生
53
PR 合并指标
30 天内没有已合并 PR

描述

Hi everyone, i'm running an event driven app and i use apache pulsar as backbone. I use message's properties to exchange metadata between the services.

I noted that, when the properties exceed ~100kb the client gives `Segmentation fault (core dumped)` (sometimes `corrupted double-linked list` instead)
> I haven't done a proper test on the size, so take the size as a guideline

I was able to simulate the behaviour in a notebook:

```py
import pulsar
import sys
import json

# need to serialize to json nested object because client accepts properties only
# of type (self: _pulsar.MessageBuilder, arg0: str, arg1: str)
nested_dict = json.dumps({
"foo": "bar"
})

big_dict = {
f"key{i}": nested_dict for i in range(3000)
}

print(sys.getsizeof(big_dict)) # 103856

client = pulsar.Client('pulsar://localhost:6650')
producer = client.create_producer('test-topic')

producer.send(content="test-message".encode(), properties=big_dict) # segfault
```

Unfortunately i don't have details in the stacktrace:

```
In [4]: producer.send(content="test-message".encode(), properties=big_dict)
Segmentation fault (core dumped)
```

Pulsar client version is 3.5.0.

贡献指南

打开贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。