public async Task Init(string name, IProviderRuntime providerRuntime, IProviderConfiguration config) { this.Log = providerRuntime.GetLogger(nameof(ArangoStorageProvider)); this.Name = name; var databaseName = config.GetProperty("DatabaseName", "Orleans"); var url = config.GetProperty("Url", "http://localhost:8529"); var username = config.GetProperty("Username", "root"); var password = config.GetProperty("Password", "password"); waitForSync = config.GetBoolProperty("WaitForSync", true); var grainRefConverter = new GrainReferenceConverter(); settings = new JsonSerializer(); settings.DefaultValueHandling = DefaultValueHandling.Include; settings.MissingMemberHandling = MissingMemberHandling.Ignore; settings.ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor; settings.Converters.Add(grainRefConverter); if (!isInitialized) { ArangoDatabase.ChangeSetting(s => { s.Database = databaseName; s.Url = url; s.Credential = new NetworkCredential(username, password); s.DisableChangeTracking = true; s.WaitForSync = waitForSync; s.Serialization.Converters.Add(grainRefConverter); }); isInitialized = true; } Database = new ArangoDatabase(); collectionsList = await Database.ListCollectionsAsync(); }