I’m encountering an issue with Azure Durable Entities in a timer-triggered Azure Function where the state (specifically Data and Initialised) isn’t persisting between calls as expected. Despite setting these values during each execution, they aren’t retained for the next trigger. Below is a simplified implementation:
[Function("AzureFunction")]
public async Task AzureFunction([TimerTrigger("...")] TimerInfo timer, [DurableClient] DurableTaskClient client)
{
await Function(client);
}
public async Task Gunction(DurableTaskClient client)
{
var data = ...; // Assume data is fetched here
var entityId = new EntityInstanceId(nameof(MC), "MCur");
var entity = await client.Entities.GetEntityAsync<MC>(entityId);
if (entity is null !entity.IncludesState entity.State is null entity.State.Data is null !entity.State.Initialised)
{
await client.Entities.SignalEntityAsync(entityId, "Update", data);
return;
}
// Additional logic
}
public class MEntity : MBaseEntity
{
[Function(nameof(MEntity))]
public static Task RunEntityAsync([EntityTrigger] TaskEntityDispatcher dispatcher)
{
return dispatcher.DispatchAsync<MEntity>();
}
}
public class MBaseEntity : IMBaseEntity
{
[JsonPropertyName("Data")]
public List<string> Data { get; private set; }
[JsonPropertyName("Initialised")]
public bool Initialised { get; private set; } = false;
public void Update(IEnumerable<string> newData)
{
Data = new List<string>(newData);
Initialised = true;
}
public void Restart()
{
Initialised = false;
}
}