azist / azos

A to Z Sky Operating System / Microservice Chassis Framework
MIT License
213 stars 29 forks source link

Reduce the nesting of Wave.FilterPipelineException #783

Closed itadapter closed 1 year ago

itadapter commented 1 year ago

The nested instance of FilterPipelineException serves no purpose but show the filter path. Is it possible not to wrap EACH exception, and only re-throw the inner FilterPipelineExceptionexception with full filter path?

{
  "TypeName": "Azos.Wave.FilterPipelineException",
  "Message": ":>realip>callflow>Portal>session>dconv>latency>cors> [Azos.Wave.MvcException] MVC handler error in work processing: [Azos.Web.HTTPStatusException] 404 - Not found",
  "Code": 0,
  "Source": "Azos.Wave",
  "StackTrace": "   at Azos.Wave.WorkFilter.FilterWorkAsync(WorkContext work, CallChain callChain)\n   at Azos.Wave.WorkFilter.InvokeNextWorkerAsync(WorkContext work, CallChain callChain)\n   at G8.Server.Web.G8BackendInfoFilter.DoFilterWorkAsync(WorkContext work, CallChain callChain) in C:\\Zdev\\ghub\\g8\\src\\G8.Server\\Web\\G8BackendInfoFilter.cs:line 28\n   at Azos.Wave.WorkFilter.FilterWorkAsync(WorkContext work, CallChain callChain)",
  "AppId": "hub",
  "AppName": "hub",
  "ExternalStatus": null,
  "InnerException": {
    "TypeName": "Azos.Wave.FilterPipelineException",
    "Message": ":>callflow>Portal>session>dconv>latency>cors> [Azos.Wave.MvcException] MVC handler error in work processing: [Azos.Web.HTTPStatusException] 404 - Not found",
    "Code": 0,
    "Source": "Azos.Wave",
    "StackTrace": "   at Azos.Wave.WorkFilter.FilterWorkAsync(WorkContext work, CallChain callChain)\n   at Azos.Wave.WorkFilter.InvokeNextWorkerAsync(WorkContext work, CallChain callChain)\n   at Azos.Wave.Filters.EffectiveCallerIPEndPointFilter.DoFilterWorkAsync(WorkContext work, CallChain callChain)\n   at Azos.Wave.WorkFilter.FilterWorkAsync(WorkContext work, CallChain callChain)",
    "AppId": "hub",
    "AppName": "hub",
    "ExternalStatus": null,
    "InnerException": {
      "TypeName": "Azos.Wave.FilterPipelineException",
      "Message": ":>Portal>session>dconv>latency>cors> [Azos.Wave.MvcException] MVC handler error in work processing: [Azos.Web.HTTPStatusException] 404 - Not found",
      "Code": 0,
      "Source": "Azos.Wave",
      "StackTrace": "   at Azos.Wave.WorkFilter.FilterWorkAsync(WorkContext work, CallChain callChain)\n   at Azos.Wave.WorkFilter.InvokeNextWorkerAsync(WorkContext work, CallChain callChain)\n   at Azos.Wave.Filters.DistributedCallFlowFilter.DoFilterWorkAsync(WorkContext work, CallChain callChain)\n   at Azos.Wave.WorkFilter.FilterWorkAsync(WorkContext work, CallChain callChain)",
      "AppId": "hub",
      "AppName": "hub",
      "ExternalStatus": null,
      "InnerException": {
        "TypeName": "Azos.Wave.FilterPipelineException",
        "Message": ":>session>dconv>latency>cors> [Azos.Wave.MvcException] MVC handler error in work processing: [Azos.Web.HTTPStatusException] 404 - Not found",
        "Code": 0,
        "Source": "Azos.Wave",
        "StackTrace": "   at Azos.Wave.WorkFilter.FilterWorkAsync(WorkContext work, CallChain callChain)\n   at Azos.Wave.WorkFilter.InvokeNextWorkerAsync(WorkContext work, CallChain callChain)\n   at Azos.Wave.Filters.PortalFilter.DoFilterWorkAsync(WorkContext work, CallChain callChain)\n   at Azos.Wave.WorkFilter.FilterWorkAsync(WorkContext work, CallChain callChain)",
        "AppId": "hub",
        "AppName": "hub",
        "ExternalStatus": null,
        "InnerException": {
          "TypeName": "Azos.Wave.FilterPipelineException",
          "Message": ":>dconv>latency>cors> [Azos.Wave.MvcException] MVC handler error in work processing: [Azos.Web.HTTPStatusException] 404 - Not found",
          "Code": 0,
          "Source": "Azos.Wave",
          "StackTrace": "   at Azos.Wave.WorkFilter.FilterWorkAsync(WorkContext work, CallChain callChain)\n   at Azos.Wave.WorkFilter.InvokeNextWorkerAsync(WorkContext work, CallChain callChain)\n   at Azos.Wave.Filters.SessionFilter.DoFilterWorkAsync(WorkContext work, CallChain callChain)\n   at Azos.Wave.WorkFilter.FilterWorkAsync(WorkContext work, CallChain callChain)",
          "AppId": "hub",
          "AppName": "hub",
          "ExternalStatus": null,
          "InnerException": {
            "TypeName": "Azos.Wave.FilterPipelineException",
            "Message": ":>latency>cors> [Azos.Wave.MvcException] MVC handler error in work processing: [Azos.Web.HTTPStatusException] 404 - Not found",
            "Code": 0,
            "Source": "Azos.Wave",
            "StackTrace": "   at Azos.Wave.WorkFilter.FilterWorkAsync(WorkContext work, CallChain callChain)\n   at Azos.Wave.WorkFilter.InvokeNextWorkerAsync(WorkContext work, CallChain callChain)\n   at G8.Server.Web.DataConversionFilter.DoFilterWorkAsync(WorkContext work, CallChain callChain) in C:\\Zdev\\ghub\\g8\\src\\G8.Server\\Web\\DataConversionFilter.cs:line 67\n   at Azos.Wave.WorkFilter.FilterWorkAsync(WorkContext work, CallChain callChain)",
            "AppId": "hub",
            "AppName": "hub",
            "ExternalStatus": null,
            "InnerException": {
              "TypeName": "Azos.Wave.FilterPipelineException",
              "Message": ":>cors> [Azos.Wave.MvcException] MVC handler error in work processing: [Azos.Web.HTTPStatusException] 404 - Not found",
              "Code": 0,
              "Source": "Azos.Wave",
              "StackTrace": "   at Azos.Wave.WorkFilter.FilterWorkAsync(WorkContext work, CallChain callChain)\n   at Azos.Wave.WorkFilter.InvokeNextWorkerAsync(WorkContext work, CallChain callChain)\n   at Azos.Wave.Filters.LatencyInstrumentationFilter.DoFilterWorkAsync(WorkContext work, CallChain callChain)\n   at Azos.Wave.WorkFilter.FilterWorkAsync(WorkContext work, CallChain callChain)",
              "AppId": "hub",
              "AppName": "hub",
              "ExternalStatus": null,
              "InnerException": {
                "TypeName": "Azos.Wave.MvcException",
                "Message": "MVC handler error in work processing: [Azos.Web.HTTPStatusException] 404 - Not found",
                "Code": 0,
                "Source": "Azos.Wave",
                "StackTrace": "   at Azos.Wave.Handlers.MvcHandler.DoError(WorkContext work, Exception error)\n   at Azos.Wave.Handlers.TypeLookupHandler`1.DoHandleWorkAsync(WorkContext work)\n   at Azos.Wave.WorkHandler.HandleWorkAsync(WorkContext work)\n   at Azos.Wave.WorkHandler.FilterAndHandleWorkAsync(WorkContext work)\n   at Azos.Wave.CompositeWorkHandler.DoHandleWorkAsync(WorkContext work)\n   at Azos.Wave.WorkHandler.HandleWorkAsync(WorkContext work)\n   at Azos.Wave.WorkHandler.FilterAndHandleWorkAsync(WorkContext work)\n   at Azos.Wave.CompositeWorkHandler.DoHandleWorkAsync(WorkContext work)\n   at Azos.Wave.WorkHandler.HandleWorkAsync(WorkContext work)\n   at Azos.Wave.WorkFilter.InvokeNextWorkerAsync(WorkContext work, CallChain callChain)\n   at G8.Server.Web.G8CorsFilter.DoFilterWorkAsync(WorkContext work, CallChain callChain) in C:\\Zdev\\ghub\\g8\\src\\G8.Server\\Web\\G8CorsFilter.cs:line 101\n   at Azos.Wave.WorkFilter.FilterWorkAsync(WorkContext work, CallChain callChain)",
                "AppId": "hub",
                "AppName": "hub",
                "ExternalStatus": null,
                "InnerException": {
                  "TypeName": "Azos.Web.HTTPStatusException",
                  "Message": "404 - Not found",
                  "Code": 0,
                  "Source": "",
                  "StackTrace": "",
                  "AppId": "hub",
                  "AppName": "hub",
                  "ExternalStatus": {
                    "ns": "wave.mvc",
                    "type": "HTTPStatusException",
                    "code": 0,
                    "http::code": 404,
                    "http::descr": "Not found"
                  },
                  "InnerException": null
                }
              }
            }
          }
        }
      }
    }
  }
}