public void Register(IStateStore store, StateRestoreCallback callback) { string storeName = store.Name; log.LogDebug("{LogPrefix}Registering state store {StoreName} to its state manager", logPrefix, storeName); if (registeredStores.ContainsKey(storeName)) { throw new ArgumentException($"{logPrefix} Store {storeName} has already been registered."); } var metadata = IsChangelogStateStore(storeName) ? new StateStoreMetadata { Store = store, ChangelogTopicPartition = GetStorePartition(storeName), RestoreCallback = callback, RecordConverter = StateManagerTools.ConverterForStore(store), Offset = null } : new StateStoreMetadata { Store = store, Offset = null }; registeredStores.Add(storeName, metadata); if (IsChangelogStateStore(storeName)) { changelogRegister.Register(GetStorePartition(storeName), this); } log.LogDebug($"{logPrefix}Registered state store {storeName} to its state manager"); }
protected void WriteCheckpoint(bool force = false) { var changelogOffsets = stateMgr.ChangelogOffsets; if (StateManagerTools.CheckpointNeed(force, offsetLastSnapshotOffset, changelogOffsets)) { stateMgr.Flush(); stateMgr.Checkpoint(); offsetLastSnapshotOffset = new Dictionary <TopicPartition, long>(changelogOffsets); } }