为什么azure函数具有引用旧数据的表?

问题描述

我有两个天蓝色函数

  1. 一个人从表存储(readFunction)中获取一条新记录
  2. 将第二个更新表存储更新为已处理(updateFunction)

两个函数都调用以下函数:

     public static async Task UpdateMessage(CloudTable table,string partitionKey,string rowKey,JobUpdateStatus  updateToStatus)
        {
            TableOperation retrieve = TableOperation.Retrieve<MigrationFeatures>(partitionKey,rowKey);

            TableResult result = await table.ExecuteAsync(retrieve);

            MigrationFeatures newMigrationData = (MigrationFeatures)result.Result;

            if (result != null)
            {
                var entity = new DynamicTableEntity(newMigrationData.PartitionKey,newMigrationData.RowKey);
                entity.ETag = "*";
                entity.Timestamp = DateTime.Now;
                entity.Properties.Add("JobStatus",new EntityProperty(updateToStatus.ToString()));
                var mergeOperation = TableOperation.Merge(entity);
                var tableResult = await table.ExecuteAsync(mergeOperation);
                var resultUpdate= tableResult.HttpStatusCode; // returns 204
            }
        }

现在,我的readFunction查询表存储以获取下一个作业,然后在上面调用此函数。 从准备到完成第一次设置。但是,下次再次转到readFunction时,它将拾取具有原始状态的相同记录,并导致该过程重复。

为什么?

更新屏幕截图 [![在此处输入图片描述] [1]] [1]

一旦流程通过第二个功能,流程将进入“已完成”,一旦碰到第一个功能,数据将在处理中更新回 [1]:https://i.stack.imgur.com/yjFDO.png

更新2:

使用Table.Replace而不是Table.Merge选项时,数据开始更新,但是丢失了一半数据(空值)

解决方法

问题很简单,数据已经存储但没有及时复制以供我阅读。

添加延迟已解决问题

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...