public async Task <PropagationEffects> PropagateAsync(PropagationKind propKind) { await StatsHelper.RegisterMsg("MethodEntityGrain::Propagate", this.GrainFactory); //if (status.Equals(EntityGrainStatus.Busy)) //{ // await Task.Delay(WAIT_TIME); // if (status.Equals(EntityGrainStatus.Busy)) // { // return new PropagationEffects(); // } //} Logger.LogVerbose(this.GetLogger(), "MethodEntityGrain", "Propagate", "Propagation for {0} ", this.methodEntity.MethodDescriptor); var sw = new Stopwatch(); sw.Start(); var propagationEffects = await this.methodEntityPropagator.PropagateAsync(propKind); sw.Stop(); propagationEffects.SiloAddress = StatsHelper.GetMyIPAddr(); Logger.LogInfo(this.GetLogger(), "MethodEntityGrain", "Propagate", "End Propagation for {0}. Time elapsed {1} Effects size: {2}", this.methodEntity.MethodDescriptor, sw.Elapsed, propagationEffects.CalleesInfo.Count); await StatsHelper.RegisterPropagationUpdates(propagationEffects.NumberOfUpdates, propagationEffects.WorkListInitialSize, this.GrainFactory); return(propagationEffects); }
public async Task <PropagationEffects> PropagateAsync(ReturnMessageInfo returnMessageInfo) { await StatsHelper.RegisterMsg("MethodEntityGrain::PropagateReturn", this.GrainFactory); //if (status.Equals(EntityGrainStatus.Busy)) //{ // await Task.Delay(WAIT_TIME); // if (status.Equals(EntityGrainStatus.Busy)) // { // return new PropagationEffects(); // } //} var propagationEffects = await this.methodEntityPropagator.PropagateAsync(returnMessageInfo); propagationEffects.SiloAddress = StatsHelper.GetMyIPAddr(); await StatsHelper.RegisterPropagationUpdates(propagationEffects.NumberOfUpdates, propagationEffects.WorkListInitialSize, this.GrainFactory); return(propagationEffects); }