Idle connection thread is not a daemon, so the JVM cannot exit without close()
Mantenedores costumam responder em até 3 dias
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 2/5
- Tempo estimado
- 1-3 horas
- Facilidade para iniciantes
- 72/100
- Tipo de issue
- Bug
- Clareza
- Claramente especificada
- Status de atividade
- Ativa
- Stack de tecnologia
- java
- Domínio
- networking
Direção de pesquisa
Comece em httpclient/src/main/java/com/backblaze/b2/client/webApiHttpClient/HttpClientFactoryImpl.java: o construtor nas linhas 60-61 cria e inicia a thread de monitoramento de conexões ociosas, e a classe da thread nas linhas 220-246 nunca chama setDaemon. Reproduza executando um pequeno main que cria um B2StorageClient com a fábrica padrão e retorna sem chamar close(), depois verifique se a JVM continua em execução. Está concluído quando a JVM encerra por conta própria e os testes existentes continuam passando após marcar a thread como daemon antes de start().
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
What happens
HttpClientFactoryImpl starts an IdleConnectionMonitorThread in its constructor, and the thread is never marked as a daemon. A program that creates a client and does not call close() on it keeps running after main returns, with no message. Calling close() is documented as the right way, but the hang is easy to hit in short programs and tests.
Where
httpclient/src/main/java/com/backblaze/b2/client/webApiHttpClient/HttpClientFactoryImpl.java:60-61 (constructor creates and starts the thread) and :220-246 (the thread class, which does not call setDaemon(true); no setDaemon call exists anywhere in the repository).
Why it matters
Impact: Left behind (a running thread keeps the process alive), silent. Severity: Medium, because it only happens when the caller never closes the client (an unusual condition, since B2StorageClientImpl documents that close() should be called) and the workaround is to call close().
How to check
Found by reading the code, not reproduced. Read the constructor and the thread class. Running a small main that builds a B2StorageClient with the default factory and returns without closing it should leave the JVM running (a thread dump would show the monitor thread). Calling setDaemon(true) before start() would let the JVM exit.
Version
Seen at v6.5.0. Present on the default branch: present.
- Linguagem predominante
- Java
- Estrelas
- 103
- Forks
- 23
- Merge médio
- 5d 8h
- PRs com merge (30d)
- 3
Preparar o ambiente
Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de Backblaze/b2-sdk-java
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
Backblaze/b2-sdk-java#248 ·
Mantenedores costumam responder em até 3 dias
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 74/100
Backblaze/b2-sdk-java#247 ·
Mantenedores costumam responder em até 3 dias
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
Backblaze/b2-sdk-java#246 ·
Mantenedores costumam responder em até 3 dias
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
Backblaze/b2-sdk-java#245 ·
Mantenedores costumam responder em até 3 dias
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
Backblaze/b2-sdk-java#242 ·
Mantenedores costumam responder em até 3 dias
Todas as issues de Backblaze/b2-sdk-java
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
IETF-Hackathon/pqc-certificates#351 ·
Mantenedores costumam responder em até 2 dias
-
bug(core): skip_nodes.json is missing SELECT and PRE, causing Python and Java to insert separators into dropdown options and preformatted textTalvez já em andamento @Bhumit267 assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
Mantenedores costumam responder em até 1 dia
-
ExceptionThrowShouldUseContext: NullPointerException on a catch block inside an annotation typeTalvez já em andamento @Carbon14-48 assumiu hoje. Abertaapproved
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
checkstyle/checkstyle#22784 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 74/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
Mantenedores costumam responder em até 1 dia