Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[KOGITO-9838] Add a troubleshooting guide for remote service invocations #507

Merged
merged 3 commits into from
Sep 28, 2023
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions serverlessworkflow/modules/ROOT/nav.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
*** xref:service-orchestration/configuring-openapi-services-endpoints.adoc[Advanced Configuration]
*** xref:service-orchestration/working-with-openapi-callbacks.adoc[Callbacks]
** xref:service-orchestration/orchestration-of-grpc-services.adoc[gRPC]
** xref:service-orchestration/troubleshooting.adoc[Troubleshooting]
ricardozanini marked this conversation as resolved.
Show resolved Hide resolved
* Event Orchestration
** xref:eventing/orchestration-of-asyncapi-based-services.adoc[AsyncAPI]
** xref:eventing/event-correlation-with-workflows.adoc[Event Correlation]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -368,7 +368,7 @@ curl -X 'POST' \
----

.Example response
[source,shell]
[source,json]
----
{"id":"5ab5dcb8-5952-4730-b526-cace363774bb","workflowdata":{"symbol":"KGTO","currentPrice":75,"profit":"50%"}}
----
Expand Down Expand Up @@ -422,7 +422,7 @@ curl -X 'POST' \
----

.Example response
[source,shell]
[source,json]
----
{"id":"a80c95d6-51fd-4ca9-b689-f779929c9937","workflowdata":{"symbol":"KGTO","currentPrice":59.36,"profit":"19%"}}
----
Expand Down Expand Up @@ -469,7 +469,7 @@ curl -X 'POST' \
----

.Example response
[source,shell]
[source,json]
----
{"id":"5ab5dcb8-5952-4730-b526-cace363774bb","workflowdata":{"symbol":"KGTO","currentPrice":56.35,"profit":"13%"}}
----
Expand All @@ -481,5 +481,6 @@ Note that, in the previous example, you overwrote the property defined in the `a

* xref:service-orchestration/orchestration-of-openapi-based-services.adoc[Orchestrating the OpenAPI services]
* link:{quarkus-profiles-url}[Quarkus configuration guide]
* xref:service-orchestration/troubleshooting.adoc[]

include::../../pages/_common-content/report-issue.adoc[]
Original file line number Diff line number Diff line change
Expand Up @@ -402,7 +402,7 @@ In a future release, {product_name} will provide support for Kubernetes Service
== Additional resources

* {configuring-openapi-services-endpoints}[Configuring OpenAPI services endpoints]
//* {camel-k-integration}[Integrating Camel K] Guide not available in DP1
* {authention-support-for-openapi-services}[Authentication for OpenAPI services in {product_name}]
* xref:service-orchestration/troubleshooting.adoc[]

include::../../pages/_common-content/report-issue.adoc[]
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
= Troubleshooting Remote Service Invocations
:compat-mode!:
// Metadata:
:description: Troubleshooting remote service invocations
:keywords: workflow, serverless, openapi, services, json, http, tls, https
// Links:
:apache_http_client_url: https://hc.apache.org/httpcomponents-client-5.2.x/

This document describes an ongoing list of known issues while invoking remote services from workflows such as OpenAPI functions.

== Turning HTTP tracing on

Under the hood, {product_name} uses link:{apache_http_client_url}[Apache HTTP Client]. You can turn HTTP requests and responses tracing by setting the following property:

.Turning HTTP tracing on
[source,properties]
----
quarkus.log.category."org.apache.http".level=DEBUG
----

Reset the application so the log configuration is propagated. After that, you can find HTTP tracing in your logs.

.HTTP Request trace
[source,log,subs="attributes+"]
----
...
2023-09-25 19:00:55,242 DEBUG Executing request POST /v2/models/yolo-model/infer HTTP/1.1
...
2023-09-25 19:00:55,243 DEBUG http-outgoing-0 >> POST /v2/models/yolo-model/infer HTTP/1.1 <1>
2023-09-25 19:00:55,243 DEBUG http-outgoing-0 >> Accept: application/json
2023-09-25 19:00:55,243 DEBUG http-outgoing-0 >> Content-Type: application/json
2023-09-25 19:00:55,243 DEBUG http-outgoing-0 >> kogitoprocid: inferencepipeline <2>
2023-09-25 19:00:55,243 DEBUG http-outgoing-0 >> kogitoprocinstanceid: 85114b2d-9f64-496a-bf1d-d3a0760cde8e <3>
2023-09-25 19:00:55,243 DEBUG http-outgoing-0 >> kogitoprocist: Active
2023-09-25 19:00:55,243 DEBUG http-outgoing-0 >> kogitoproctype: SW
2023-09-25 19:00:55,243 DEBUG http-outgoing-0 >> kogitoprocversion: 1.0
2023-09-25 19:00:55,243 DEBUG http-outgoing-0 >> Content-Length: 23177723
2023-09-25 19:00:55,244 DEBUG http-outgoing-0 >> Host: yolo-model-opendatahub-model.apps.trustyai.dzzt.p1.openshiftapps.com
...
----

1. The path where the client will make the HTTP invocation
2. The workflow definition id
3. The workflow instance (execution) id

In the example above, you have access to every portion of the HTTP request and can verify if something is wrong during the message creation.
For example, you can use the `kogitoprocinstanceid` header to trace this HTTP message in the logs.

For responses, you should be able to see the details below the request body:

.HTTP Response trace
[source,log,subs="attributes+"]
----
...
2023-09-25 19:01:00,738 DEBUG http-outgoing-0 << "HTTP/1.1 500 Internal Server Error[\r][\n]"
ricardozanini marked this conversation as resolved.
Show resolved Hide resolved
2023-09-25 19:01:00,738 DEBUG http-outgoing-0 << "content-type: application/json[\r][\n]"
2023-09-25 19:01:00,738 DEBUG http-outgoing-0 << "date: Mon, 25 Sep 2023 19:01:00 GMT[\r][\n]"
2023-09-25 19:01:00,738 DEBUG http-outgoing-0 << "content-length: 186[\r][\n]"
2023-09-25 19:01:00,738 DEBUG http-outgoing-0 << "set-cookie: 276e4597d7fcb3b2cba7b5f037eeacf5=5427fafade21f8e7a4ee1fa6c221cf40; path=/; HttpOnly; Secure; SameSite=None[\r][\n]"
2023-09-25 19:01:00,738 DEBUG http-outgoing-0 << "[\r][\n]"
2023-09-25 19:01:00,738 DEBUG http-outgoing-0 << "{"code":13, "message":"Failed to load Model due to adapter error: Error calling stat on model file: stat /models/yolo-model__isvc-1295fd6ba9/yolov5s-seg.onnx: no such file or directory"}" <1>
ricardozanini marked this conversation as resolved.
Show resolved Hide resolved
...
----

1. Response code returned by the server. In this example, a general server error
2. Response body containing the message body returned by the server

Having the details about the HTTP invocation enables users to do a better assessment about the behavior of a given workflow.

include::../../pages/_common-content/report-issue.adoc[]