2

MySQL で休止状態になっているデータベースでストレス テストを実行しています。maxpoolsize が 15 であることを除いて、デフォルト設定で c3p0 接続プールを使用しています。

interface EntityRepository extends JpaRepository<Entity, UUID> {}

@Service
public class EntityService {

    @Autowired
    EntityRepository er;

    @Transactional(propagation = Propagation.REQUIRED)
    public Entity addEntity(Entity r) {
        er.save(r);
    }
}

public class StressTest {

    @Autowired
    EntityService rs;

    @Test
    public void entityStressTest() {
        for(int i = 0; i < 100; i++) {
            Thread t = new Thread(new Runnable() {
                public void run() {
                    rs.addEntity(new Entity());
                }
            }
            t.start();
        }
    }
}

このテストを実行するたびに、5 ~ 8 個のエンティティを作成し、次の 3 つのログ メッセージのいずれかを受け取ります。

[エラー] 14:39:23,127 [Thread-20] SqlExceptionHelper - SQLException は、次の障害によって引き起こされました: com.mchange.v2.resourcepool.ResourcePoolException: 閉じられた、または破損したリソース プールを使用しようとしました

[情報] 14:48:45,478 [スレッド 11] JdbcTransaction - HHH000425: セッションを閉じることができませんでした。飲み込み例外 [org.hibernate.service.UnknownServiceException: 不明なサービスが要求されました [org.hibernate.stat.spi.StatisticsImplementor]] トランザクションが完了したため

[ INFO] 14:49:22,860 [Thread-18] BasicResourcePool - com.mchange.v2.resourcepool.BasicResourcePool@16f7ca -- プールが現在閉じられているため、リソースのチェックアウトの試行が中断されました。[スレッド: スレッド-18]

私はこれを引き起こしている可能性があることに困惑しています

4

1 に答える 1