Skip to Content
We are live but in Staging 🎉
WorkflowsWorkflow: RunCommand Fallback (gRPC and HTTP)

Workflow: RunCommand Fallback (gRPC and HTTP)

Last validated: 2026-05-11

Use this workflow when dodil vbase does not expose the method you need.

Important Difference from Direct CLI Data Path

  • This workflow sends requests through VBase gateway RunCommand.
  • Direct CLI data path (dodil vbase collection|data|index|status|version) sends typed Milvus RPCs straight to the tenant endpoint selected via dodil vbase db use.
  • Use this RunCommand workflow only when direct CLI command coverage is missing.

Use Cases

  • invoke Milvus methods outside CLI command coverage
  • run direct diagnostics (GetMetrics, DescribeCollection, etc.)
  • perform controlled fallback without changing application code

Prerequisites

  1. Acquire service_id through CLI or ListServices API.
  2. Identify target db_name.
  3. Keep a valid bearer token in TOKEN.

Step 1: Verify access metadata with API

gRPC:

grpcurl -insecure \ -H "authorization: Bearer $TOKEN" \ -d '{"service_id":"<service_id>"}' \ "rpc.dev.dodil.io:443" dodil.vbase.v1.VBaseService/GetServiceAccess

HTTP:

curl -sS \ -H "Authorization: Bearer $TOKEN" \ "https://api.dev.dodil.io:443/v1/vbase/<service_id>/access"

Step 2: Run a simple method (ShowCollections)

gRPC:

grpcurl -insecure \ -H "authorization: Bearer $TOKEN" \ -H "dbname: <db_name>" \ -d '{ "service_id":"<service_id>", "method":"ShowCollections", "input_payload":"{\"db_name\":\"<db_name>\"}" }' \ "rpc.dev.dodil.io:443" dodil.vbase.v1.VBaseService/RunCommand

HTTP:

curl -sS -X POST \ -H "Authorization: Bearer $TOKEN" \ -H "dbname: <db_name>" \ -H "Content-Type: application/json" \ "https://api.dev.dodil.io:443/v1/vbase/<service_id>/run-command" \ -d '{ "service_id":"<service_id>", "method":"ShowCollections", "input_payload":"{\"db_name\":\"<db_name>\"}" }'

Step 3: Run vector search through fallback

gRPC:

grpcurl -insecure \ -H "authorization: Bearer $TOKEN" \ -H "dbname: <db_name>" \ -d '{ "service_id":"<service_id>", "method":"Search", "input_payload":"{\"db_name\":\"<db_name>\",\"collection_name\":\"docs\",\"dsl\":\"\",\"dsl_type\":1,\"output_fields\":[\"id\"],\"partition_names\":[],\"search_params\":[{\"key\":\"anns_field\",\"value\":\"vector\"},{\"key\":\"metric_type\",\"value\":\"L2\"},{\"key\":\"params\",\"value\":\"{}\"},{\"key\":\"topk\",\"value\":\"5\"}],\"nq\":1,\"placeholder_group\":{\"placeholders\":[{\"tag\":\"$0\",\"type\":\"FloatVector\",\"values\":[[0.11,0.12,0.13,0.14,0.15,0.16,0.17,0.18]]}]},\"travel_timestamp\":0,\"guarantee_timestamp\":0,\"not_return_all_meta\":false,\"consistency_level\":0,\"use_default_consistency\":true,\"search_by_primary_keys\":false,\"sub_reqs\":[],\"expr_template_values\":{}}" }' \ "rpc.dev.dodil.io:443" dodil.vbase.v1.VBaseService/RunCommand

Argument Guidance

  • method: exact Milvus method name string.
  • input_payload: escaped JSON string; invalid JSON returns parse errors.
  • dbname header: strongly recommended for DB-scoped methods.

Common Failure Modes

  • unauthorized: missing/expired authorization token.
  • parse error: malformed escaped JSON in input_payload.
  • unsupported method: method name not present in server executor map.