JavaWebStack / JavaWebStack/orm

Queue.take in SQLPool can produce deadlock

Aberta
#58 0 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

bug
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

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. 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

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.