public async Task <IActionResult> Get(string name) { List <ExternalResource> listResources = await StateManagerHelper.GetExternalResourcesAsync(_stateManager); var extRes = listResources.Where(p => p.RowKey == name).FirstOrDefault(); if (extRes != null) { bool isSuccess = false; try { isSuccess = await checkResourceHealth(extRes); if (isSuccess) { return(Ok()); } else { return(StatusCode(500)); } } catch (Exception ex) { ServiceEventSource.Current.Message("Error: {0} - {1}", ex.Message, ex.StackTrace); return(StatusCode(500, ex)); } } else { return(StatusCode(404)); } }
private async Task<bool> registerResourcesToWatchdog(CancellationToken cancellationToken) { try { var listResources = await StateManagerHelper.GetExternalResourcesAsync(this.StateManager); var updateResources = listResources.Where(p => p.IsUpdate).ToList(); List<Task> listTaskRegister = new List<Task>(); for (int i = 0; i < updateResources.Count; i++) { var rs = listResources[i]; listTaskRegister.Add(new Task(async () => { IReliableDictionary<string, ExternalResource> rsDict = await StateManagerHelper.GetExternalResourceDictAsync(this.StateManager); try { await WatchdogHelper.RegisterHealthCheckAsync(rs.RowKey, this.Context.ServiceName, this.Context.PartitionId, rs.Frequency, $"api/health/{rs.RowKey}", cancellationToken); rs.IsUpdate = false; using (ITransaction tx = this.StateManager.CreateTransaction()) { await rsDict.AddOrUpdateAsync(tx, rs.RowKey, rs, (k, v) => { return rs; }, TimeSpan.FromSeconds(5), CancellationToken.None); await tx.CommitAsync().ConfigureAwait(false); } } catch (Exception ex) { ServiceEventSource.Current.Exception($"Resource {rs.RowKey} register failed", ex.Message, ex.StackTrace); } })); } listTaskRegister.ForEach(task => { task.Start(); }); Task.WaitAll(listTaskRegister.ToArray()); return true; } catch (Exception ex) { ServiceEventSource.Current.Exception("Register resources failed", ex.Message, ex.StackTrace); return false; } }
public async Task <IActionResult> Get() { try { List <ExternalResource> listResources = await StateManagerHelper.GetExternalResourcesAsync(_stateManager); return(Ok(listResources)); } catch (Exception ex) { return(StatusCode(500, ex)); } }