Skip to content

goroutine ​

使用ケース ​

  • リゾルバーでの通知や外部API呼び出しの非同期処理
  • バックグラウンドプロセスを待たずにユーザーにレスポンスを返す

テストの問題 ​

  • 本番環境(PostgreSQL): 複数のgoroutineが1つのコネクションにアクセスしても問題なし
  • テスト環境(SQLiteインメモリDB): 不安定なデッドロックが発生

テストのソリューション ​

goroutineを使用するリゾルバーをテストする場合、SQLiteのデッドロックを避けるためDBコネクションを1に制限。

実装例 ​

  • goroutineを使用するテストケース用にテストファクトリーで単一コネクションを設定
  • 参照: internal/utils/test/factory/factory.go#L26

実装例 ​

  • リゾルバーでのgoroutine使用: internal/adapters/graph/user_report_user.resolvers.go#L82