Erro Waiting for table level lock MySQL aplicação Java (Resolvido)

Tenho um aplicação Java swing que utiliza o banco de dados MySQL, em sua operação depois de passado algum tempo em funcionamento percebi que a aplicação travava em alguns momentos, sendo necessário reiniciar o computador para conseguir realizar o processo novamente pois mesmo fechando a aplicação e a abrindo novamente o mesmo problema persistia. Consegui identificar que o problema ocasionava no momento de realizar a gravação ou atualização de informações. Consultando o Workbench chequei as conexões e vi que havia um usuário parado com o comando referente ao processo.
O estado daquela conexão estava como Waiting for table level lock agora não tenho a certeza de que é ela que esta causando o problema ou algo da minha aplicação que não esta tratando de forma correta.

DAO.java

  public int create(Produto produto) {
    EntityManager em = null;
    try {
        em = getEntityManager();
        em.getTransaction().begin();
        em.persist(produto);
        em.getTransaction().commit();
    } finally {
        if (em != null) {
            em.close();
        }
       }

    return produto.getCodproduto();
}

public void edit(Produto produto) throws NonexistentEntityException, Exception {
    EntityManager em = null;
    try {
        em = getEntityManager();
        em.getTransaction().begin();
        produto = em.merge(produto);
        em.getTransaction().commit();
    } catch (Exception ex) {
        String msg = ex.getLocalizedMessage();
        if (msg == null || msg.length() == 0) {
            Integer id = produto.getCodproduto();
            if (findProduto(id) == null) {
                throw new NonexistentEntityException("The produto with id " + id + " no longer exists.");
            }
        }
        throw ex;
    } finally {
        if (em != null) {
            em.close();
        }
    }
}

`

Está utilizando qual implementação para o JPA? EclipseLink ou Hibernate? Se for hibernate, sugiro adicionar nas configurações algo como o C3P0 e definir o timeout da conexão. Talvez isso ajude.

Boa tarde amigo, sim eu utilizo o Hibernate como framework, e também faço uso do C3P0 com timeout de 1800.

Hoje encontrei a solução para o meu problema, junto a aplicação existe uma aplicação que faz o backup do banco de dados em um determinado tempo que era agendado, porém ao finalizar o backup ele não fecha a conexão deixando assim um porta de comunicação aberta.

Ao realizar o kill da conexão de forma manual o sistema voltou a seu funcionamento normal.