apache/seatunnel · error · MilvusConnectorException
DESC_INDEX_ERROR
DESC_INDEX_ERROR
Error message
DESC_INDEX_ERROR
What it means
MilvusConvertUtils.getCatalogTable throws DESC_INDEX_ERROR when the Milvus describeIndex RPC returns a non-success status. The connector uses index metadata to populate vector index constraint information on the CatalogTable; failing to fetch it aborts table conversion. Note the error carries no message — the raw status code is all you get here.
Source
Thrown at seatunnel-connectors-v2/connector-milvus/src/main/java/org/apache/seatunnel/connectors/seatunnel/milvus/utils/MilvusConvertUtils.java:178
.name(CommonOptions.METADATA.getName())
.dataType(STRING_TYPE)
.options(options)
.build();
columns.add(dynamicColumn);
}
// primary key
PrimaryKey primaryKey = buildPrimaryKey(schema.getFieldsList());
// index
R<DescribeIndexResponse> describeIndexResponseR =
client.describeIndex(
DescribeIndexParam.newBuilder()
.withDatabaseName(database)
.withCollectionName(collection)
.build());
if (describeIndexResponseR.getStatus() != R.Status.Success.getCode()) {
throw new MilvusConnectorException(MilvusConnectionErrorCode.DESC_INDEX_ERROR);
}
DescribeIndexResponse indexResponse = describeIndexResponseR.getData();
List<ConstraintKey.ConstraintKeyColumn> vectorIndexes = buildVectorIndexes(indexResponse);
// build tableSchema
TableSchema tableSchema =
TableSchema.builder()
.columns(columns)
.primaryKey(primaryKey)
.constraintKey(
ConstraintKey.of(
ConstraintKey.ConstraintType.VECTOR_INDEX_KEY,
"vector_index",
vectorIndexes))
.build();
// build tableId
String CATALOG_NAME = "Milvus";View on GitHub (pinned to cf67b549a7)
Solutions
- Create the expected vector index on the collection (e.g. IVF/HNSW index on the vector field) before running the job
- Verify the collection exists and is fully built (not mid-load) in Milvus
- Check Milvus user permissions for describeIndex
- If the collection legitimately has no index, create a minimal index or upgrade the connector/Milvus version that tolerates missing indexes
Example fix
// before: collection with no vector index
collection.create(); // no index created
// after: build the index before catalog discovery
collection.createIndex(CreateIndexParam.newBuilder()
.withFieldName("embedding")
.withIndexType(IndexType.HNSW)
.withMetricType(MetricType.L2)
.build()); Defensive patterns
Strategy: validation
Validate before calling
R<DescribeIndexResponse> r = client.describeIndex(DescribeIndexParam.newBuilder()
.withDatabaseName(db).withCollectionName(coll).build());
if (r.getStatus() != R.Status.Success.getCode())
throw new IllegalStateException("Index not describable on " + db + "." + coll + " — create one first"); Try / catch
try {
catalog.getTable(tablePath);
} catch (MilvusConnectorException e) {
if (e.getErrorCode() == MilvusConnectionErrorCode.DESC_INDEX_ERROR) {
logger.error("describeIndex failed on collection (often: no index exists)");
// create a vector index, then retry
} else { throw e; }
} Prevention
- Always build a vector index on vector fields right after creating the collection
- Wait for collection load/index build to complete before running catalog reads
- Check permissions for index metadata access
When it happens
Trigger: client.describeIndex(DescribeIndexParam with databaseName/collectionName) returns status != R.Status.Success while getCatalogTable builds the table schema — e.g. collection has no index at all or is not accessible.
Common situations: Querying a brand-new collection created without any vector index, describing an empty/placeholder collection, or a Milvus version where describeIndex on an index-less collection returns an error status rather than an empty list.
Related errors
- CREATE_INDEX_ERROR
- DESC_COLLECTION_ERROR
- SHOW_PARTITION_ERROR
- Failed to open catalog %s
- Unsupported action type:
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/78e117ed896a3785.
Report an issue: GitHub.