CORESERVERでThreadPoolBuildErrorが出た場合の対処法
目次
はじめに
このブログは現在、Cloudflare Pagesの無料枠とAstroを使って構築しています。しかし、ページ数が増えるにつれてビルド時間が長くなってきたので、ビルド時の環境構築やビルド成果物のアップロードにかかる時間をなくすために、CORESERVERの導入を検討しています。
実際に導入する前にCORESERVERの30日間無料体験で試してみたところ、後述のエラーによってOGP画像の自動生成が失敗することが判明しました。今回は、その対処法について紹介します。
エラー内容
Astroのビルド中に次のようなエラーが発生しました。具体的には、OGP画像の自動生成に使用しているSatoriの内部でエラーが発生していると思われます。
thread '<unnamed>' panicked at src/index.crates.io-6f17d22bba15001f/rayon-core-1.12.1/src/registry.rs:168:10:The global thread pool has not been initialized.: ThreadPoolBuildError { kind: IOError(Os { code: 11, kind: WouldBlock, message: "Resource temporarily unavailable" }) }note: run with `RUST_BACKTRACE=1` environment variable to display a backtraceAborted (core dumped)エラーメッセージを読むと、Rustの並列処理ライブラリーであるRayonの処理中にエラーが発生しているようです。
Next.jsで同様のエラーが発生した場合は、swcMinifyをfalseに設定することで解決するという記事がいくつかありました。しかし、私の場合はNext.jsではなくAstroを使っているため、この対処法は使えません。
- Next.jsでnpm run buildできないときはnext.config.jsの swcMinifyをfalseにするとnpm run buildできるかもしれない。 #Next.js - Qiita
- CORESERVERでNext.jsは動くけどビルドできない | PeakAlive
- javascript - NEXTJS - Production Build Error - panicked at 'the global thread pool has not been initialized - Stack Overflow
解決方法
しばらくインターネットをさまよっていたところ、こちらのDiscussionsを見つけました。
内容としては簡単で、環境変数にRAYON_NUM_THREADS=1を設定すれば解決できるというものです。
これを試してみると、エラーが解消されました。CORESERVERはLinuxなので、exportコマンドを使って環境変数を設定します。
export RAYON_NUM_THREADS=1手元の環境では、RAYON_NUM_THREADS=64でも問題なく動作しました。CORESERVERの仕様が最大64コアとなっていたので、それに合わせた数値を設定しました。64でも引き続きエラーが出る場合は、数値を減らしてみてください。
記事をシェア
フォローして最新情報を入手
Googleの優先ソースに追加すると、このサイトの記事をGoogleで見つけやすくなります。また、ぜひXやRSSフィードもフォローしてください。
おすすめ記事
-1.png&w=1080&q=75)
生まれた時から、母国語よりも先にJavaScriptを使っていました。ネットの海のどこにもいなくてどこにでもいます。
Webフロントエンドプログラマーとして、TypeScriptを用いたWebアプリやブラウザー拡張機能を制作。Xのシャドウバン検知ツール「Shadowban Scanner」やリンクカード復活ツール「Restore Link Card」を公開し、国内外のメディアで紹介されました。iGEM 2023ではJapan-UnitedチームのWikiを制作してGrand Prizeの獲得に貢献。ブログではXやSNSの最新ニュース、不具合の検証と対処法、フロントエンド開発の知見を発信しています。



![npmのパッケージの設定画面のスクリーンショット。[Trusted Publisher]セクションの[Select your publisher]に[GitHub Actions]と[GitLab CI/CD]の2つのボタンが表示されている](/_next/image/?url=%2Fapi%2Fmedia%2Ffile%2Fnpm-trusted-publishing-settings.png&w=3840&q=75)





![[新しいXチャットへようこそ]というテキストが画面に大きく表示されており、その下には次の3つの説明が表示されている。[エンドツーエンドの暗号化:メッセージは、端末にかかわらずエンドツーエンドで暗号化されています。][最先端のプライバシー:Xを含め、他の人がメッセージを読むことはできません。][パスコードを設定:メッセージを保護するため、4桁のパスコードを設定してください。]これらの説明の下には、[パスコードを作成]という大きなボタンが配置されている](/_next/image/?url=%2Fapi%2Fmedia%2Ffile%2Fwelcome-to-new-chat.png&w=1920&q=75)

