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 viadodil 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
- Acquire
service_idthrough CLI orListServicesAPI. - Identify target
db_name. - 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/GetServiceAccessHTTP:
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/RunCommandHTTP:
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/RunCommandArgument Guidance
method: exact Milvus method name string.input_payload: escaped JSON string; invalid JSON returns parse errors.dbnameheader: strongly recommended for DB-scoped methods.
Common Failure Modes
unauthorized: missing/expiredauthorizationtoken.- parse error: malformed escaped JSON in
input_payload. - unsupported method: method name not present in server executor map.