public async Task InvokeFunctionAsync()

in src/DotNetWorker.Core/FunctionsApplication.cs [68:109]


        public async Task InvokeFunctionAsync(FunctionContext context)
        {
            Activity? activity = null;

            if (Activity.Current is null)
            {
                // This will act as an internal activity that represents remote Host activity. This cannot be tracked as this is not associate to an ActivitySource. 
                activity = new Activity(nameof(InvokeFunctionAsync));
                activity.Start();

                if (ActivityContext.TryParse(context.TraceContext.TraceParent, context.TraceContext.TraceState, true, out ActivityContext activityContext))
                {
                    activity.SetId(context.TraceContext.TraceParent);
                    activity.SetSpanId(activityContext.SpanId.ToString());
                    activity.SetTraceId(activityContext.TraceId.ToString());
                    activity.SetRootId(activityContext.TraceId.ToString());
                    activity.ActivityTraceFlags = activityContext.TraceFlags;
                    activity.TraceStateString = activityContext.TraceState;
                }
            }

            var scope = new FunctionInvocationScope(context.FunctionDefinition.Name, context.InvocationId);

            using var logScope = _logger.BeginScope(scope);
            using Activity? invokeActivity = _functionActivitySourceFactory.StartInvoke(context);

            try
            {
                await _functionExecutionDelegate(context);
            }
            catch (Exception ex)
            {
                invokeActivity?.SetStatus(ActivityStatusCode.Error, ex.Message);

                Log.InvocationError(_logger, context.FunctionDefinition.Name, context.InvocationId, ex);

                throw;
            }

            invokeActivity?.Stop();
            activity?.Stop();
        }