Субъекты Service Fabric. Как правильно удалить постоянное состояние субъекта на жестком диске кластера?
Делая свой POC на основе акторов сервисной фабрики, я хотел знать, удаляется ли постоянное состояние актера, когда актер и его состояние явно удаляются.
Когда актер создан, я вижу, что файл с именем ActorStateStore создается в одном из подкаталогов SfDevCluster. Я предполагаю, что этот файл используется для хранения состояния актера, когда класс актера имеет [StatePersistence(StatePersistence.Persisted)]
приписывать. Проблема в том, что актер создан, и я явно удаляю его состояние с помощью RemoveStateAsync("stateName")
и удалите самого актера serviceProxy.DeleteActorAsync(actorId, default(CancellationToken))
размер ActorStateStore остается прежним.
Я также пытался наблюдать за поведением сборщика мусора во время выполнения этой проблемы, но, похоже, он не удаляет какие-либо данные из файла ActorStateStore.
Я прочитал в документации: "Среда актера хранит некоторые метаданные о каждом существующем актере. Удаление всех состояний актера не приводит к удалению метаданных об этом актере". Так может кто-нибудь объяснить правильный способ удаления этих метаданных с диска?
С наилучшими пожеланиями,
Александр
Упомянутый вами файл - это файл локальной базы данных ese, из которого удаляются строки данных об удаленном актере. Как размер файла базы данных отличается от состояния и удаления субъекта.
Мика Маккитрик - облачный инженер @Microsoft
Вы можете найти полный ответ здесь.