Why does Milvus fail with “fs == nullptr” when loading large HNSW indexes from S3 storage?
01:35 30 Dec 2025

I’m running into a fatal error when loading a large HNSW index in Milvus 2.6.7, deployed via Docker, and backed by S3-compatible object storage.

Here is the setup:

  • Collection size: ~50 million vectors

  • Both data and HNSW index are stored in S3-compatible object storage

  • Data ingestion completes successfully

  • HNSW index is built without any errors

  • The issue only occurs during load_collection

When loading the collection, Milvus crashes and gets stuck. The last error in the logs looks like this:

Assert "fs != nullptr" => arrow file system is nullptr
at segcore/load_index.cpp

From the logs, the failure happens while loading HNSW index files, and it seems the Arrow filesystem object is null. This only reproduces with large collections; smaller datasets load fine.

My main question is:

What typically causes fs == nullptr assertion failures when loading large HNSW indexes in Milvus with S3 object storage, and is this related to Arrow filesystem initialization or the index loading mechanism?

docker amazon-s3 vector-database milvus