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

  1. Create the expected vector index on the collection (e.g. IVF/HNSW index on the vector field) before running the job
  2. Verify the collection exists and is fully built (not mid-load) in Milvus
  3. Check Milvus user permissions for describeIndex
  4. 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

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


AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10). Data as JSON: /api/errors/78e117ed896a3785. Report an issue: GitHub.