apiVersion, id, host, port, logLevel, persistConfig, persistIndex, enableUi, solutionsDir,
stateStore, secretStore, defaultPriorityQueueCapacity, defaultDispatchBufferCapacity,
pluginRegistry, autoInstallPlugins, plugins, verifyPlugins, trustedIdentities,
hotReloadPlugins, hotReloadDebounceMs, corsAllowedOrigins, sources, queries, reactions,
identityProviders, instances
Summary
drasi-lib supports a
storage_backendsconfig at the DrasiLib level that allows defining named storage backends (e.g.,rocksdb,redis,memory) which queries can reference by name viastorageBackend: <name>. However, drasi-server does not expose this as a top-level config field — the server config schema only accepts:Current Behavior
Per-query inline
storageBackendobjects work (parsed asserde_json::Valueand deserialized toStorageBackendRef::Inline):A string value like
storageBackend: my-rocksdeserializes asStorageBackendRef::Named("my-rocks"), but always fails at runtime because no named backends are defined.The legacy
persistIndex: truecreates a single RocksDB at./data/{instance_id}/indexfor the entire instance, but this is all-or-nothing and doesn't allow per-query backend choice.Desired Behavior
Expose the
storageBackendstop-level field (matching what drasi-lib already supports in its config schema atDrasiLibConfig::storage_backends):Why
DrasiLibConfig::validate()checks that all referenced backend names exist). The server should pass these through.References
drasi-core/lib/src/config/schema.rs—DrasiLibConfig::storage_backends: Vec<StorageBackendConfig>drasi-core/lib/src/indexes/factory.rs—IndexFactory::new(backends, ...)drasi-core/lib/src/builder.rs—add_storage_backend()