JavaWebStack / JavaWebStack/orm
Queue.take in SQLPool can produce deadlock
Ninguém assumiu esta issue ainda.
- Linguagem predominante
- Java
- Estrelas
- 7
- Forks
- 1
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Descrição
**Describe the Bug**
In SQLPool we use take on the queue to wait for a connection to become available. If no connections become available (for example if a single thread is using up all connections) it produces a deadlock causing a lockup of the entire application since all database queries will run into a deadlock
**To Reproduce**
Steps to reproduce the behavior:
1. Set the pool size to 1
2. Call get once
3. Call get a second time -> gets stuck
**Expected behavior**
The pool should use poll instead and throw an Exception after a reasonable amount of waiting time preventing a lockup of the entire application
**Environment Information:**
- Java Language Level 8
- Version 1.0.3
**Additional Context**
The root cause of this might be a different issue since the pool shouldn't have ran out of connections in the first place. We can check this issue once proper exceptions are thrown.
Guia de contribuição
Nenhum guia de contribuição indexado para este repositório
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.
Direção de pesquisa
Comece pelo caminho de SQLPool que usa Queue.take e, em seguida, reproduza o problema com o tamanho do pool igual a 1, chamando get duas vezes. Compare o comportamento atual de bloqueio com a espera temporizada e a exceção esperadas e verifique se a aplicação não permanece mais travada quando nenhuma conexão se torna disponível.
Escrita pelo modelo de indexação a partir do texto da issue.
Avaliação
- Stack de tecnologia
- java
- Domínio
- databases
- Tipo de issue
- Bug
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Status de atividade
- Estagnada
- Clareza
- Razoavelmente clara
- Facilidade para iniciantes
- 45/100