protected static string GetMetricTypeString(MetricTypes type) { switch (type) { case MetricTypes.DebugEngine: return("Engine"); case MetricTypes.PortSupplier: return("PortSupplier"); case MetricTypes.Exception: return("Exception"); case MetricTypes.ExpressionEvaluator: return("ExpressionEvaluator"); case MetricTypes.ExpressionEvaluatorExtension: return("EEExtension"); case MetricTypes.SymbolProvider: return("SymbolProvider"); default: throw new ArgumentException(); } }
protected static string GetMetricTypeString(MetricTypes type) { switch (type) { case MetricTypes.DebugEngine: return "Engine"; case MetricTypes.PortSupplier: return "PortSupplier"; case MetricTypes.Exception: return "Exception"; case MetricTypes.ExpressionEvaluator: return "ExpressionEvaluator"; case MetricTypes.ExpressionEvaluatorExtension: return "EEExtension"; case MetricTypes.SymbolProvider: return "SymbolProvider"; default: throw new ArgumentException(); } }
protected DebuggerRegistrationAttribute(MetricTypes type, Guid section) { MetricType = type; MetricSection = section; }
protected DebuggerRegistrationAttribute(MetricTypes type, Guid section) { MetricType = type; MetricSection = section; }
public async Task <TResponse> Handle <TResponse>(IClusterRequest <TResponse> request) where TResponse : BaseResponse, new() { _logger.LogDebug(_nodeStateService.GetNodeLogId() + "Detected RPC " + request.GetType().Name + "." + Environment.NewLine + JsonConvert.SerializeObject(request, Formatting.Indented)); if (!_nodeStateService.IsBootstrapped) { _logger.LogDebug(_nodeStateService.GetNodeLogId() + "Node is not ready..."); return(new TResponse() { IsSuccessful = false, ErrorMessage = "Node is not ready..." }); } if (IsClusterRequest <TResponse>(request) && !_nodeStateService.InCluster) { _logger.LogWarning(_nodeStateService.GetNodeLogId() + "Reqeuest rejected, node is not apart of cluster..."); return(new TResponse() { IsSuccessful = false, ErrorMessage = "Node is not apart of cluster..." }); } DateTime commandStartTime = DateTime.Now; try { TResponse response; switch (request) { case ExecuteCommands t1: response = await HandleIfLeaderOrReroute(request, async() => (TResponse)(object)await _raftService.Handle(t1)); break; case RequestVote t1: response = (TResponse)(object)await _raftService.Handle(t1); break; case AppendEntry t1: response = (TResponse)(object)await _raftService.Handle(t1); break; case InstallSnapshot t1: response = (TResponse)(object)await _raftService.Handle(t1); break; case RequestCreateIndex t1: response = await HandleIfLeaderOrReroute(request, async() => (TResponse)(object)await _dataService.Handle(t1)); break; case AddShardWriteOperation t1: response = (TResponse)(object)await _dataService.Handle(t1); break; case RequestDataShard t1: response = (TResponse)(object)await _dataService.Handle(t1); break; case AllocateShard t1: response = (TResponse)(object)await _dataService.Handle(t1); break; case ReplicateShardWriteOperation t1: response = (TResponse)(object)await _dataService.Handle(t1); break; case RequestShardWriteOperations t1: response = (TResponse)(object)await _dataService.Handle(t1); break; default: throw new Exception("Request is not implemented"); } if (MetricGenerated != null && _nodeStateService.Role == NodeState.Leader && request.Metric) { //Add and send if (!lastMetricGenerated.ContainsKey(request.RequestName)) { lastMetricGenerated.TryAdd(request.RequestName, DateTime.Now); MetricGenerated.Invoke(this, new Metric() { Date = DateTime.Now, IntervalMs = 0, Type = MetricTypes.ClusterCommandElapsed(request.RequestName), Value = (DateTime.Now - commandStartTime).TotalMilliseconds }); } else if ((DateTime.Now - lastMetricGenerated[request.RequestName]).TotalMilliseconds > _clusterOptions.MetricsIntervalMs) { lastMetricGenerated.TryUpdate(request.RequestName, DateTime.Now, lastMetricGenerated[request.RequestName]); MetricGenerated.Invoke(this, new Metric() { Date = DateTime.Now, IntervalMs = 0, Type = MetricTypes.ClusterCommandElapsed(request.RequestName), Value = (DateTime.Now - commandStartTime).TotalMilliseconds }); } } return(response); } catch (TaskCanceledException e) { _logger.LogWarning(_nodeStateService.GetNodeLogId() + "Request " + request.RequestName + " timed out..."); return(new TResponse() { IsSuccessful = false }); } catch (Exception e) { _logger.LogError(_nodeStateService.GetNodeLogId() + "Failed to handle request " + request.RequestName + " with error " + e.Message + Environment.StackTrace + e.StackTrace); return(new TResponse() { IsSuccessful = false }); } }
public PerfomanceMetricAttribute(MetricTypes metricType, string methodName, string tag) : base() { MetricsFactory.CreateMetric(metricType, methodName, tag); }