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の最新ニュース、不具合の検証と対処法、フロントエンド開発の知見を発信しています。





![[何を報告していますか?]というタイトルのダイアログで[スパム]にチェックが入っているスクリーンショット](/_next/image/?url=%2Fapi%2Fmedia%2Ffile%2Fx-report-post-spam-selected.png&w=1920&q=75)

![Xの設定の[アクセシビリティ、表示、言語]>[表示]>[フォントサイズ]のスクリーンショット](/_next/image/?url=%2Fapi%2Fmedia%2Ffile%2Fx-android-font-size-settings.png&w=3840&q=75)
![Xの設定画面のスクリーンショット。[アクセシビリティ、表示、言語]>[データ利用の設定]の中のようすが示されている](/_next/image/?url=%2Fapi%2Fmedia%2Ffile%2Fx-data-saver-high-resolusion-image-settings.png&w=3840&q=75)
![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)

