apache / apache/pulsar-client-python
[Bug] Segmentation fault when properties exceed ~100kb
- Linguagem predominante
- Python
- Estrelas
- 75
- Forks
- 53
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Descrição
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.
Guia de contribuição
Direção de pesquisa
Comece executando a reprodução do notebook com pulsar.Client, create_producer e producer.send usando o payload de propriedades grandes relatado e, em seguida, capture o stack trace ausente. Considera-se concluído quando o mesmo payload não causar mais um segmentation fault nem uma corrupted double-linked list, e houver cobertura para o caso de propriedades grandes.
Escrita pelo modelo de indexação a partir do texto da issue.
Avaliação
- Stack de tecnologia
- python
- Domínio
- distributed-systems
- Tipo de issue
- Bug
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Status de atividade
- Estagnada
- Clareza
- Razoavelmente clara
- Facilidade para iniciantes
- 35/100