Implement in-process multi-dataset sync isolation across core, network, persistence, and tests
All checks were successful
NuGet Package Publish / nuget (push) Successful in 1m14s
All checks were successful
NuGet Package Publish / nuget (push) Successful in 1m14s
This commit is contained in:
@@ -4,6 +4,7 @@ using Microsoft.Extensions.Hosting;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Serilog;
|
||||
using System.Text.Json;
|
||||
using ZB.MOM.WW.CBDDC.Core;
|
||||
using ZB.MOM.WW.CBDDC.Core.Network;
|
||||
using ZB.MOM.WW.CBDDC.Core.Storage;
|
||||
using ZB.MOM.WW.CBDDC.Core.Sync;
|
||||
@@ -62,11 +63,22 @@ internal class Program
|
||||
Directory.CreateDirectory(dataPath);
|
||||
string databasePath = Path.Combine(dataPath, $"{nodeId}.rocksdb");
|
||||
string surrealDatabase = nodeId.Replace("-", "_", StringComparison.Ordinal);
|
||||
var multiDatasetOptions = builder.Configuration
|
||||
.GetSection("CBDDC:MultiDataset")
|
||||
.Get<MultiDatasetRuntimeOptions>()
|
||||
?? new MultiDatasetRuntimeOptions
|
||||
{
|
||||
EnableMultiDatasetSync = true,
|
||||
EnableDatasetPrimary = true,
|
||||
EnableDatasetLogs = true,
|
||||
EnableDatasetTimeseries = true
|
||||
};
|
||||
|
||||
// Register CBDDC services with embedded Surreal (RocksDB).
|
||||
builder.Services.AddSingleton<ICBDDCSurrealSchemaInitializer, SampleSurrealSchemaInitializer>();
|
||||
builder.Services.AddSingleton<SampleDbContext>();
|
||||
builder.Services.AddCBDDCCore()
|
||||
builder.Services
|
||||
.AddCBDDCCore()
|
||||
.AddCBDDCSurrealEmbedded<SampleDocumentStore>(_ => new CBDDCSurrealEmbeddedOptions
|
||||
{
|
||||
Endpoint = "rocksdb://local",
|
||||
@@ -74,8 +86,30 @@ internal class Program
|
||||
Namespace = "cbddc_sample",
|
||||
Database = surrealDatabase
|
||||
})
|
||||
.AddCBDDCSurrealEmbeddedDataset(DatasetId.Primary, options =>
|
||||
{
|
||||
options.InterestingCollections = ["Users", "TodoLists"];
|
||||
})
|
||||
.AddCBDDCSurrealEmbeddedDataset(DatasetId.Logs, options =>
|
||||
{
|
||||
options.InterestingCollections = ["Logs"];
|
||||
})
|
||||
.AddCBDDCSurrealEmbeddedDataset(DatasetId.Timeseries, options =>
|
||||
{
|
||||
options.InterestingCollections = ["Timeseries"];
|
||||
})
|
||||
.AddCBDDCNetwork<StaticPeerNodeConfigurationProvider>(); // useHostedService = true by default
|
||||
|
||||
if (multiDatasetOptions.EnableMultiDatasetSync)
|
||||
builder.Services.AddCBDDCMultiDataset(options =>
|
||||
{
|
||||
options.EnableMultiDatasetSync = multiDatasetOptions.EnableMultiDatasetSync;
|
||||
options.EnableDatasetPrimary = multiDatasetOptions.EnableDatasetPrimary;
|
||||
options.EnableDatasetLogs = multiDatasetOptions.EnableDatasetLogs;
|
||||
options.EnableDatasetTimeseries = multiDatasetOptions.EnableDatasetTimeseries;
|
||||
options.AdditionalDatasets = multiDatasetOptions.AdditionalDatasets.ToList();
|
||||
});
|
||||
|
||||
builder.Services.AddHostedService<ConsoleInteractiveService>(); // Runs the Input Loop
|
||||
|
||||
var host = builder.Build();
|
||||
|
||||
Reference in New Issue
Block a user