You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kie.apache.org by "gabriel-farache (via GitHub)" <gi...@apache.org> on 2025/10/13 18:10:37 UTC

[PR] [NO-ISSUE] Implement process instance aware logging and context management [incubator-kie-kogito-runtimes]

gabriel-farache opened a new pull request, #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094

   This PR introduces a comprehensive process instance aware logging system that provides proper context isolation and enhanced observability across the Kogito platform.
   
   Key Features:
   - Process Instance Context Management: New ProcessInstanceContext class provides thread-safe context management for maintaining process instance ID throughout execution lifecycle
   - Enhanced UnitOfWork Support: ProcessInstanceAwareUnitOfWork wrapper ensures context preservation during transaction boundaries and work unit execution
   - Process-Aware Work Item Handling: Context-aware work item handler maintains process instance context during custom service task execution
   - Comprehensive Test Infrastructure: New log analysis utilities and test base classes for validating context isolation and log format consistency
   
   Core Components:
   - ProcessInstanceContext: Thread-local context manager with async support
   - ProcessInstanceAwareUnitOfWork: UoW wrapper maintaining context during transactions
   - ProcessInstanceAwareUnitOfWorkFactory: Factory for creating context-aware UoW instances
   - ProcessInstanceLogAnalyzer: Utility for parsing and validating process-aware logs
   - ProcessInstanceLoggingTestBase: Base class for integration tests with log validation
   
   Token Exchange Enhancements:
   - Enhanced TokenEvictionHandler with improved error handling and logging
   - Updated TokenPolicyManager with better cache management and policy validation
   - Improved integration tests with process instance context support
   
   Configuration Updates:
   - Updated log format configurations to support pipe-delimited process instance logging
   - Added quarkus-process-instance-logging.properties for runtime configuration
   - Enhanced application.properties files across integration test modules
   
   Integration Tests:
   - New ProcessInstanceLoggingIT for testing basic context management
   - New ProcessInstanceLoggingConcurrencyIT for testing concurrent process execution
   - Enhanced TokenExchangeIT with process instance context validation
   - Updated test utilities for comprehensive log analysis
   
   This implementation ensures proper process instance isolation in logs while maintaining backward compatibility and providing comprehensive testing infrastructure for validation of context management.
   
   Assisted-by: Claude Code - claude-sonnet-4@20250514
   
   <!--
     Licensed to the Apache Software Foundation (ASF) under one
     or more contributor license agreements.  See the NOTICE file
     distributed with this work for additional information
     regarding copyright ownership.  The ASF licenses this file
     to you under the Apache License, Version 2.0 (the
     "License"); you may not use this file except in compliance
     with the License.  You may obtain a copy of the License at
   
       http://www.apache.org/licenses/LICENSE-2.0
   
     Unless required by applicable law or agreed to in writing,
     software distributed under the License is distributed on an
     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
     KIND, either express or implied.  See the License for the
     specific language governing permissions and limitations
     under the License.
     -->
   
   Many thanks for submitting your Pull Request :heart:! 
   
   <!-- Please don't forget your Issue link -->
   Closes/Fixes/Resolves #ISSUE-NUMBER
   
   <!-- Please provide a short description of what this PR does -->
   **Description:**
   
   <!-- Link to related PRs: -->
   
   Please make sure that your PR meets the following requirements:
   
   - [ ] You have read the [contributors guide](CONTRIBUTING.md)
   - [ ] Your code is properly formatted according to [this configuration](https://github.com/apache/incubator-kie-kogito-runtimes/tree/main/kogito-build/kogito-ide-config)
   - [ ] Pull Request title is properly formatted: `Issue-XYZ Subject`
   - [ ] Pull Request title contains the target branch if not targeting main: `[0.9.x] Issue-XYZ Subject`
   - [ ] Pull Request contains link to the JIRA issue
   - [ ] Pull Request contains link to any dependent or related Pull Request
   - [ ] Pull Request contains description of the issue
   - [ ] Pull Request does not include fixes for issues other than the main ticket
   
   <details>
   <summary>
   How to replicate CI configuration locally?
   </summary>
   
   Build Chain tool does "simple" maven build(s), the builds are just Maven commands, but because the repositories relates and depends on each other and any change in API or class method could affect several of those repositories there is a need to use [build-chain tool](https://github.com/kiegroup/github-action-build-chain) to handle cross repository builds and be sure that we always use latest version of the code for each repository.
    
   [build-chain tool](https://github.com/kiegroup/github-action-build-chain) is a build tool which can be used on command line locally or in Github Actions workflow(s), in case you need to change multiple repositories and send multiple dependent pull requests related with a change you can easily reproduce the same build by executing it on Github hosted environment or locally in your development environment. See [local execution](https://github.com/kiegroup/github-action-build-chain#local-execution) details to get more information about it.
   </details>
   
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "wmedvede (via GitHub)" <gi...@apache.org>.
wmedvede commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3613811103

   Hi @gabriel-farache , I created the following project  https://github.com/wmedvede/test-sonataflow-opentelemetry to give a try to the extension.
   
   And I have the follwoing results.
   
   1) in the docker-compose directory do:
   `docker-compose up`
   
   to get a Jeager + UI instance running.
   
   2) Then, with the following deps configuration:
   
   ```
           <dependency>
               <groupId>io.quarkus</groupId>
               <artifactId>quarkus-opentelemetry</artifactId>
           </dependency>
   
           <!-- un-comment this extension, and comment the quarkus-opentelemetry, and no traces are produced at all -->
   <!--        <dependency>-->
   <!--            <groupId>org.apache.kie.sonataflow</groupId>-->
   <!--            <artifactId>sonataflow-quarkus-otel</artifactId>-->
   <!--            <version>${kogito.version}</version>-->
   ```
   
   If I do mvn quarkus:dev, and wait some time, etc, I can see traces in the Jeager UI:
   
   <img width="1907" height="805" alt="image" src="https://github.com/user-attachments/assets/a4fa2eae-8672-42ae-96c0-76e21467333d" />\
   
   
   
   
   3) If I repeat the scenario but using the  `sonataflow-quarkus-otel`, no traces are shown.
   
    
   Would you minid take a look?
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "kie-ci3 (via GitHub)" <gi...@apache.org>.
kie-ci3 commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3607919353

   
   **PR job** `#29` was: **UNSTABLE**
   Possible explanation: This should be test failures
   
   
   <details>
   <summary><b>Reproducer</b></summary>
   
   
   
   build-chain build full_downstream  -f 'https://raw.githubusercontent.com/${AUTHOR:apache}/incubator-kie-kogito-pipelines/${BRANCH:main}/.ci/buildchain-config-pr-cdb.yaml' -o 'bc' -p apache/incubator-kie-kogito-runtimes -u https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094 --skipParallelCheckout
   
   NOTE: To install the build-chain tool, please refer to https://github.com/kiegroup/github-action-build-chain#local-execution
   
   </details>
   
   
   Please look here: https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/29/display/redirect
   
   **Test results:**
   - PASSED: 3699
   - FAILED: 5
   
   Those are the test failures: 
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/29/testReport/org.kie.kogito.addons.jwt.it/JwtParserIT/testJwtParserWorkflowEndToEnd/">org.kie.kogito.addons.jwt.it.JwtParserIT.testJwtParserWorkflowEndToEnd</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/29/testReport/org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it/KnativeServingAddonIT/___/">org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it.KnativeServingAddonIT.(?)</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/29/testReport/org.kie.kogito.addons.quarkus.kubernetes/ConfigValueExpanderIT/test/">org.kie.kogito.addons.quarkus.kubernetes.ConfigValueExpanderIT.test</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/29/testReport/org.kie.kogito.quarkus.token.persistence.workflows/TokenExchangeIT/tokenExchange/">org.kie.kogito.quarkus.token.persistence.workflows.TokenExchangeIT.tokenExchange</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/29/testReport/org.kie.kogito.integrationtests.quarkus/TaskIT/testUpdateTaskInfo/">org.kie.kogito.integrationtests.quarkus.TaskIT.testUpdateTaskInfo</a></summary>
   1 expectation failed.<br/>Expected status code <403> but was <200>.<br/>
   </details>
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gabriel-farache (via GitHub)" <gi...@apache.org>.
gabriel-farache commented on code in PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#discussion_r2585948785


##########
quarkus/addons/token-exchange/runtime/src/main/java/org/kie/kogito/addons/quarkus/token/exchange/cache/TokenPolicyManager.java:
##########
@@ -55,25 +56,37 @@ public long expireAfterRead(String key, CachedTokens value, long currentTime, lo
     }
 
     /**
-     * Calculate time to expiration based on token's actual expiration time minus proactive refresh buffer
+     * Calculate time to expiration based on token's actual expiration time minus proactive refresh buffer.
+     * This method sets the process instance context from the cache key for proper logging.
      */
     private static long calculateTimeToExpiration(String cacheKey, CachedTokens tokens) {
-        String authName = CacheUtils.extractAuthNameFromCacheKey(cacheKey);
-        long proactiveRefreshSeconds = Math.max(0, ConfigReaderUtils.getProactiveRefreshSeconds(authName));
+        // Extract process instance ID from cache key and set context for logging
+        String processInstanceId = CacheUtils.extractProcessInstanceIdFromCacheKey(cacheKey);
+        if (processInstanceId != null && !processInstanceId.isEmpty()) {
+            ProcessInstanceContext.setProcessInstanceId(processInstanceId);

Review Comment:
   yes



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gabriel-farache (via GitHub)" <gi...@apache.org>.
gabriel-farache commented on code in PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#discussion_r2581759642


##########
api/kogito-services/src/test/java/org/kie/kogito/services/context/ProcessInstanceContextTest.java:
##########
@@ -0,0 +1,490 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.kie.kogito.services.context;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicReference;
+
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.slf4j.MDC;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+/**
+ * Unit tests for ProcessInstanceContext utility class.
+ * Tests thread safety, context management, and async operations.
+ */
+class ProcessInstanceContextTest {
+
+    private static final String TEST_PROCESS_ID = "test-process-123";
+    private static final String TEST_PROCESS_ID_2 = "test-process-456";
+
+    @BeforeEach
+    void setUp() {
+        // Ensure clean state before each test
+        ProcessInstanceContext.clear();
+    }
+
+    @AfterEach
+    void tearDown() {
+        // Clean up after each test
+        ProcessInstanceContext.clear();
+        ProcessInstanceContext.clearExtensions();
+    }
+
+    @Test
+    void testSetAndGetProcessInstanceId() {
+        // Initially no context (returns empty string)
+        assertEquals(ProcessInstanceContext.GENERAL_CONTEXT, ProcessInstanceContext.getProcessInstanceId());
+        assertFalse(ProcessInstanceContext.hasContext());
+
+        // Set process instance ID
+        ProcessInstanceContext.setProcessInstanceId(TEST_PROCESS_ID);
+
+        // Verify MDC is set
+        assertEquals(TEST_PROCESS_ID, ProcessInstanceContext.getProcessInstanceId());
+        assertEquals(TEST_PROCESS_ID, MDC.get(ProcessInstanceContext.MDC_PROCESS_INSTANCE_KEY));
+        assertTrue(ProcessInstanceContext.hasContext());
+    }
+
+    @Test
+    void testSetNullProcessInstanceId() {
+        ProcessInstanceContext.setProcessInstanceId(null);
+
+        // Should use general context (empty string)
+        assertEquals(ProcessInstanceContext.GENERAL_CONTEXT, ProcessInstanceContext.getProcessInstanceId());
+        assertEquals(ProcessInstanceContext.GENERAL_CONTEXT, MDC.get(ProcessInstanceContext.MDC_PROCESS_INSTANCE_KEY));
+        assertFalse(ProcessInstanceContext.hasContext());
+    }
+
+    @Test
+    void testClearContext() {
+        ProcessInstanceContext.setProcessInstanceId(TEST_PROCESS_ID);
+        assertTrue(ProcessInstanceContext.hasContext());
+
+        ProcessInstanceContext.clear();
+
+        assertEquals(ProcessInstanceContext.GENERAL_CONTEXT, ProcessInstanceContext.getProcessInstanceId());
+        assertEquals(ProcessInstanceContext.GENERAL_CONTEXT, MDC.get(ProcessInstanceContext.MDC_PROCESS_INSTANCE_KEY));
+        assertFalse(ProcessInstanceContext.hasContext());
+    }
+
+    @Test
+    void testContextReplacement() {
+        ProcessInstanceContext.setProcessInstanceId(TEST_PROCESS_ID);
+        assertEquals(TEST_PROCESS_ID, ProcessInstanceContext.getProcessInstanceId());
+
+        // Set different ID - should replace
+        ProcessInstanceContext.setProcessInstanceId(TEST_PROCESS_ID_2);
+        assertEquals(TEST_PROCESS_ID_2, ProcessInstanceContext.getProcessInstanceId());
+
+        // Clear should remove all context
+        ProcessInstanceContext.clear();
+        assertFalse(ProcessInstanceContext.hasContext());
+    }
+
+    @Test
+    void testWithProcessInstanceContextSupplier() {
+        assertFalse(ProcessInstanceContext.hasContext());
+
+        ProcessInstanceContext.setProcessInstanceId(TEST_PROCESS_ID);
+        String result;
+        try {
+            assertEquals(TEST_PROCESS_ID, ProcessInstanceContext.getProcessInstanceId());
+            assertTrue(ProcessInstanceContext.hasContext());
+            result = "test-result";
+        } finally {
+            ProcessInstanceContext.clear();
+        }
+
+        assertEquals("test-result", result);
+        assertFalse(ProcessInstanceContext.hasContext());
+    }
+
+    @Test
+    void testWithProcessInstanceContextRunnable() {
+        assertFalse(ProcessInstanceContext.hasContext());
+        AtomicReference<String> capturedId = new AtomicReference<>();
+
+        ProcessInstanceContext.setProcessInstanceId(TEST_PROCESS_ID);
+        try {
+            capturedId.set(ProcessInstanceContext.getProcessInstanceId());
+        } finally {
+            ProcessInstanceContext.clear();
+        }
+
+        assertEquals(TEST_PROCESS_ID, capturedId.get());
+        assertFalse(ProcessInstanceContext.hasContext());
+    }
+
+    @Test
+    void testWithProcessInstanceContextExceptionHandling() {
+        assertFalse(ProcessInstanceContext.hasContext());
+
+        assertThrows(RuntimeException.class, () -> {
+            ProcessInstanceContext.setProcessInstanceId(TEST_PROCESS_ID);
+            try {
+                assertTrue(ProcessInstanceContext.hasContext());
+                throw new RuntimeException("Test exception");
+            } finally {
+                ProcessInstanceContext.clear();
+            }
+        });
+
+        // Context should be cleared even after exception
+        assertFalse(ProcessInstanceContext.hasContext());
+    }
+
+    @Test
+    void testAsyncContextPropagation() {
+        ProcessInstanceContext.setProcessInstanceId(TEST_PROCESS_ID);
+
+        // Copy context for async operation
+        Map<String, String> contextMap = ProcessInstanceContext.copyContextForAsync();
+        assertNotNull(contextMap);
+        assertEquals(TEST_PROCESS_ID, contextMap.get(ProcessInstanceContext.MDC_PROCESS_INSTANCE_KEY));
+
+        // Clear original context
+        ProcessInstanceContext.clear();
+        assertFalse(ProcessInstanceContext.hasContext());
+
+        // Restore context from async
+        ProcessInstanceContext.setContextFromAsync(contextMap);
+        assertEquals(TEST_PROCESS_ID, ProcessInstanceContext.getProcessInstanceId());
+        assertTrue(ProcessInstanceContext.hasContext());
+    }
+
+    @Test
+    void testAsyncContextWithNullMap() {
+        ProcessInstanceContext.setProcessInstanceId(TEST_PROCESS_ID);
+        assertTrue(ProcessInstanceContext.hasContext());
+
+        // Setting null context map should clear context
+        ProcessInstanceContext.setContextFromAsync(null);
+        assertFalse(ProcessInstanceContext.hasContext());
+        assertEquals(ProcessInstanceContext.GENERAL_CONTEXT, ProcessInstanceContext.getProcessInstanceId());
+    }
+
+    @Test
+    void testThreadIsolation() throws InterruptedException {
+        ExecutorService executor = Executors.newFixedThreadPool(3);
+        CountDownLatch latch = new CountDownLatch(3);
+        AtomicReference<Exception> exception = new AtomicReference<>();
+
+        try {
+            // Thread 1: Set and verify process ID 1
+            executor.submit(() -> {
+                try {
+                    ProcessInstanceContext.setProcessInstanceId("process-1");
+                    Thread.sleep(100); // Allow other threads to run
+                    assertEquals("process-1", ProcessInstanceContext.getProcessInstanceId());
+                } catch (Exception e) {
+                    exception.set(e);
+                } finally {
+                    ProcessInstanceContext.clear();
+                    latch.countDown();
+                }
+            });
+
+            // Thread 2: Set and verify process ID 2
+            executor.submit(() -> {
+                try {
+                    ProcessInstanceContext.setProcessInstanceId("process-2");
+                    Thread.sleep(100); // Allow other threads to run
+                    assertEquals("process-2", ProcessInstanceContext.getProcessInstanceId());
+                } catch (Exception e) {
+                    exception.set(e);
+                } finally {
+                    ProcessInstanceContext.clear();
+                    latch.countDown();
+                }
+            });
+
+            // Thread 3: No context set
+            executor.submit(() -> {
+                try {
+                    Thread.sleep(100); // Allow other threads to run
+                    // In a new thread without context, should return empty string
+                    assertFalse(ProcessInstanceContext.hasContext());
+                } catch (Exception e) {
+                    exception.set(e);
+                } finally {
+                    latch.countDown();
+                }
+            });
+
+            assertTrue(latch.await(5, TimeUnit.SECONDS));
+            assertNull(exception.get());
+
+        } finally {
+            executor.shutdown();
+        }
+    }
+
+    @Test
+    void testAsyncOperationWithContextPropagation() throws Exception {
+        ProcessInstanceContext.setProcessInstanceId(TEST_PROCESS_ID);
+        Map<String, String> contextMap = ProcessInstanceContext.copyContextForAsync();
+
+        CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
+            // Restore context in async thread
+            ProcessInstanceContext.setContextFromAsync(contextMap);
+            try {
+                return ProcessInstanceContext.getProcessInstanceId();
+            } finally {
+                ProcessInstanceContext.clear();
+            }
+        });
+
+        String result = future.get(5, TimeUnit.SECONDS);
+        assertEquals(TEST_PROCESS_ID, result);
+
+        // Original thread context should still be intact
+        assertEquals(TEST_PROCESS_ID, ProcessInstanceContext.getProcessInstanceId());
+    }
+
+    @Test
+    void testMdcIntegration() {
+        // Verify MDC is properly managed
+        ProcessInstanceContext.setProcessInstanceId(TEST_PROCESS_ID);
+
+        assertEquals(TEST_PROCESS_ID, MDC.get(ProcessInstanceContext.MDC_PROCESS_INSTANCE_KEY));
+
+        ProcessInstanceContext.clear();
+
+        assertEquals(ProcessInstanceContext.GENERAL_CONTEXT, MDC.get(ProcessInstanceContext.MDC_PROCESS_INSTANCE_KEY));
+    }
+
+    @Test
+    void testGeneralContextBehavior() {
+        ProcessInstanceContext.setProcessInstanceId(ProcessInstanceContext.GENERAL_CONTEXT);
+
+        assertFalse(ProcessInstanceContext.hasContext());
+        assertEquals(ProcessInstanceContext.GENERAL_CONTEXT, ProcessInstanceContext.getProcessInstanceId());
+        assertEquals(ProcessInstanceContext.GENERAL_CONTEXT, MDC.get(ProcessInstanceContext.MDC_PROCESS_INSTANCE_KEY));
+    }
+
+    @Test
+    void testHasContextAccuracy() {
+        // Initially no context
+        assertFalse(ProcessInstanceContext.hasContext());
+
+        // Set general context explicitly - should not count as having context
+        ProcessInstanceContext.setProcessInstanceId(ProcessInstanceContext.GENERAL_CONTEXT);
+        assertFalse(ProcessInstanceContext.hasContext());
+
+        // Set specific context
+        ProcessInstanceContext.setProcessInstanceId(TEST_PROCESS_ID);
+        assertTrue(ProcessInstanceContext.hasContext());
+
+        // Clear should remove context
+        ProcessInstanceContext.clear();
+        assertFalse(ProcessInstanceContext.hasContext());
+    }
+
+    @Test
+    void testMdcConsistencyAfterOperations() {
+        // Test that MDC always stays consistent after various operations
+
+        // Set process ID
+        ProcessInstanceContext.setProcessInstanceId(TEST_PROCESS_ID);
+        assertEquals(TEST_PROCESS_ID, MDC.get(ProcessInstanceContext.MDC_PROCESS_INSTANCE_KEY));
+
+        // Clear should reset to general context
+        ProcessInstanceContext.clear();
+        assertEquals(ProcessInstanceContext.GENERAL_CONTEXT, MDC.get(ProcessInstanceContext.MDC_PROCESS_INSTANCE_KEY));
+
+        // Setting null should also result in general context
+        ProcessInstanceContext.setProcessInstanceId(null);
+        assertEquals(ProcessInstanceContext.GENERAL_CONTEXT, MDC.get(ProcessInstanceContext.MDC_PROCESS_INSTANCE_KEY));
+    }
+
+    @Test
+    void testOptimizationSkipsSameValue() {
+        // Test that setting the same value twice doesn't update MDC unnecessarily
+        ProcessInstanceContext.setProcessInstanceId(TEST_PROCESS_ID);
+        String mdcValue1 = MDC.get(ProcessInstanceContext.MDC_PROCESS_INSTANCE_KEY);
+
+        // Set same value again
+        ProcessInstanceContext.setProcessInstanceId(TEST_PROCESS_ID);
+        String mdcValue2 = MDC.get(ProcessInstanceContext.MDC_PROCESS_INSTANCE_KEY);
+
+        assertEquals(TEST_PROCESS_ID, mdcValue1);
+        assertEquals(TEST_PROCESS_ID, mdcValue2);
+        assertEquals(mdcValue1, mdcValue2);
+    }
+
+    @Test
+    void testConcurrentAccess() throws InterruptedException {
+        int threadCount = 10;
+        int iterationsPerThread = 1000;
+        ExecutorService executor = Executors.newFixedThreadPool(threadCount);
+        CountDownLatch latch = new CountDownLatch(threadCount);
+        AtomicReference<Exception> exception = new AtomicReference<>();
+
+        for (int t = 0; t < threadCount; t++) {
+            final int threadId = t;
+            executor.submit(() -> {
+                try {
+                    for (int i = 0; i < iterationsPerThread; i++) {
+                        String processId = "thread-" + threadId + "-process-" + i;
+                        ProcessInstanceContext.setProcessInstanceId(processId);
+                        assertEquals(processId, ProcessInstanceContext.getProcessInstanceId());
+                        assertTrue(ProcessInstanceContext.hasContext());
+                        ProcessInstanceContext.clear();
+                    }
+                } catch (Exception e) {
+                    exception.set(e);
+                } finally {
+                    latch.countDown();
+                }
+            });
+        }
+
+        assertTrue(latch.await(30, TimeUnit.SECONDS));
+        assertNull(exception.get());
+
+        executor.shutdown();
+    }
+
+    @Test
+    void testExtensionRegistrationAndRestoration() {
+        // Create a mock extension
+        MockContextExtension extension = new MockContextExtension("test.");
+
+        // Register the extension
+        ProcessInstanceContext.registerExtension("test.", extension);
+
+        // Set up context with both core and extension keys
+        ProcessInstanceContext.setProcessInstanceId(TEST_PROCESS_ID);
+        MDC.put("test.key1", "value1");
+        MDC.put("test.key2", "value2");
+        MDC.put("other.key", "should-not-be-restored");
+
+        // Copy context for async
+        Map<String, String> contextMap = ProcessInstanceContext.copyContextForAsync();
+
+        // Clear MDC
+        ProcessInstanceContext.clear();
+        MDC.clear();
+
+        // Restore context from async
+        ProcessInstanceContext.setContextFromAsync(contextMap);
+
+        // Verify core context is restored
+        assertEquals(TEST_PROCESS_ID, ProcessInstanceContext.getProcessInstanceId());
+
+        // Verify extension was called to restore its keys
+        assertTrue(extension.restoreCalled);
+        assertEquals(2, extension.restoredKeys.size());
+        assertEquals("value1", extension.restoredKeys.get("test.key1"));
+        assertEquals("value2", extension.restoredKeys.get("test.key2"));
+        assertNull(extension.restoredKeys.get("other.key"));
+    }
+
+    @Test
+    void testExtensionRegistrationValidation() {
+        MockContextExtension extension = new MockContextExtension("test.");
+
+        // Test null prefix
+        assertThrows(IllegalArgumentException.class, () -> {
+            ProcessInstanceContext.registerExtension(null, extension);
+        });
+
+        // Test empty prefix
+        assertThrows(IllegalArgumentException.class, () -> {
+            ProcessInstanceContext.registerExtension("", extension);
+        });
+
+        // Test null extension
+        assertThrows(IllegalArgumentException.class, () -> {
+            ProcessInstanceContext.registerExtension("test.", null);
+        });
+    }
+
+    @Test
+    void testExtensionExceptionHandling() {
+        // Create an extension that throws exceptions
+        ContextExtension faultyExtension = new ContextExtension() {
+            @Override
+            public String getMdcKeyPrefix() {
+                return "faulty.";
+            }
+
+            @Override
+            public void restoreKeys(Map<String, String> preservedKeys) {
+                throw new RuntimeException("Extension failure");
+            }
+        };
+
+        ProcessInstanceContext.registerExtension("faulty.", faultyExtension);
+
+        // Set up context
+        ProcessInstanceContext.setProcessInstanceId(TEST_PROCESS_ID);
+        MDC.put("faulty.key", "value");
+
+        Map<String, String> contextMap = ProcessInstanceContext.copyContextForAsync();
+        ProcessInstanceContext.clear();
+
+        // This should not throw, even though the extension fails
+        assertDoesNotThrow(() -> {
+            ProcessInstanceContext.setContextFromAsync(contextMap);
+        });
+
+        // Core functionality should still work
+        assertEquals(TEST_PROCESS_ID, ProcessInstanceContext.getProcessInstanceId());
+    }
+
+    /**
+     * Mock implementation of ContextExtension for testing.
+     */
+    private static class MockContextExtension implements ContextExtension {
+        private final String prefix;
+        boolean restoreCalled = false;
+        Map<String, String> restoredKeys = new HashMap<>();
+
+        MockContextExtension(String prefix) {
+            this.prefix = prefix;
+        }
+
+        @Override
+        public String getMdcKeyPrefix() {
+            return prefix;
+        }
+
+        @Override
+        public void restoreKeys(Map<String, String> preservedKeys) {
+            restoreCalled = true;
+            restoredKeys.clear();
+            restoredKeys.putAll(preservedKeys);
+
+            // Actually restore the keys to MDC for testing
+            preservedKeys.forEach(MDC::put);
+        }
+    }
+

Review Comment:
   I added a test that validate only the core fields are restored 



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gabriel-farache (via GitHub)" <gi...@apache.org>.
gabriel-farache commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3553575653

   @ricardozanini @fjtirado @wmedvede When you have some time, could you please review the PR?


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "wmedvede (via GitHub)" <gi...@apache.org>.
wmedvede commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3669593009

   @gabriel-farache I see "Inside" as "under the scope of". 
   ```
   Span1 starts
       ChildSpan1.1 starts
           ChildSpan1.1.1 starts
           ChildSpan1.1.1 ends
       ChildSpan1.1 ends
       ChildSpan1.2 starts
       ChildSpan1.2 ends
   Span1 ends
   ```
   
   I think, ChildSpan1.1, ChildSpan1.2  etc, executed "inside" Span1, and ChildSpan1.1.1 executed inside ChildSpan1.1, and indirectly, "inside" Span1
   
       
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "kie-ci3 (via GitHub)" <gi...@apache.org>.
kie-ci3 commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3554484814

   
   **PR job** `#19` was: **UNSTABLE**
   Possible explanation: This should be test failures
   
   
   <details>
   <summary><b>Reproducer</b></summary>
   
   
   
   build-chain build full_downstream  -f 'https://raw.githubusercontent.com/${AUTHOR:apache}/incubator-kie-kogito-pipelines/${BRANCH:main}/.ci/buildchain-config-pr-cdb.yaml' -o 'bc' -p apache/incubator-kie-kogito-runtimes -u https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094 --skipParallelCheckout
   
   NOTE: To install the build-chain tool, please refer to https://github.com/kiegroup/github-action-build-chain#local-execution
   
   </details>
   
   
   Please look here: https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/19/display/redirect
   
   **Test results:**
   - PASSED: 3774
   - FAILED: 4
   
   Those are the test failures: 
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/19/testReport/org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it/KnativeServingAddonIT/___/">org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it.KnativeServingAddonIT.(?)</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/19/testReport/org.kie.kogito.addons.quarkus.kubernetes/ConfigValueExpanderIT/test/">org.kie.kogito.addons.quarkus.kubernetes.ConfigValueExpanderIT.test</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/19/testReport/org.kie.kogito.quarkus.token.persistence.workflows/TokenExchangeIT/tokenExchange/">org.kie.kogito.quarkus.token.persistence.workflows.TokenExchangeIT.tokenExchange</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/19/testReport/org.kie.kogito.integrationtests.quarkus/TaskIT/testUpdateTaskInfo/">org.kie.kogito.integrationtests.quarkus.TaskIT.testUpdateTaskInfo</a></summary>
   1 expectation failed.<br/>Expected status code <403> but was <200>.<br/>
   </details>
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gabriel-farache (via GitHub)" <gi...@apache.org>.
gabriel-farache commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3657244491

   @wmedvede in the 1st images, I think it's 3 spans composing the trace. There should be 1 span by node
   I'll take a deeper look for the `node.completed` not being here
   
   As for the warning message "Context in storage not the expected context, Scope.close was not called correctly", when I looked I found this discussion https://github.com/quarkusio/quarkus/issues/25102#issuecomment-1294836125 which stated that it should be harmless but I can look again to try to remove this


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [NO-ISSUE] Implement process instance aware logging and context management [incubator-kie-kogito-runtimes]

Posted by "kie-ci3 (via GitHub)" <gi...@apache.org>.
kie-ci3 commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3403650584

   
   **PR job** `#4` was: **UNSTABLE**
   Possible explanation: This should be test failures
   
   
   <details>
   <summary><b>Reproducer</b></summary>
   
   
   
   build-chain build full_downstream  -f 'https://raw.githubusercontent.com/${AUTHOR:apache}/incubator-kie-kogito-pipelines/${BRANCH:main}/.ci/buildchain-config-pr-cdb.yaml' -o 'bc' -p apache/incubator-kie-kogito-runtimes -u https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094 --skipParallelCheckout
   
   NOTE: To install the build-chain tool, please refer to https://github.com/kiegroup/github-action-build-chain#local-execution
   
   </details>
   
   
   Please look here: https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/4/display/redirect
   
   **Test results:**
   - PASSED: 3564
   - FAILED: 3
   
   Those are the test failures: 
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/4/testReport/org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it/KnativeServingAddonIT/___/">org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it.KnativeServingAddonIT.(?)</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:351)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:322)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:336)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:556)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:346)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:909)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:492)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/4/testReport/org.kie.kogito.addons.quarkus.kubernetes/ConfigValueExpanderIT/test/">org.kie.kogito.addons.quarkus.kubernetes.ConfigValueExpanderIT.test</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:351)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:322)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:336)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:556)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:346)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:909)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:492)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/4/testReport/org.kie.kogito.addon.quarkus.messaging.common/QuarkusEventThreadPoolTest/testQuarkusEventThreadPoolMultiThreadTest/">org.kie.kogito.addon.quarkus.messaging.common.QuarkusEventThreadPoolTest.testQuarkusEventThreadPoolMultiThreadTest</a></summary>
   expected: <100> but was: <99>
   </details>
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gabriel-farache (via GitHub)" <gi...@apache.org>.
gabriel-farache commented on code in PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#discussion_r2572352315


##########
api/kogito-services/src/main/java/org/kie/kogito/services/uow/ProcessInstanceAwareUnitOfWork.java:
##########
@@ -0,0 +1,208 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.kie.kogito.services.uow;
+
+import java.util.Map;
+
+import org.kie.kogito.services.context.ProcessInstanceContext;
+import org.kie.kogito.uow.UnitOfWork;
+import org.kie.kogito.uow.WorkUnit;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * A UnitOfWork wrapper that manages process instance context throughout the unit of work lifecycle.
+ * This implementation ensures proper context cleanup even in the face of exceptions, preventing
+ * context leaks and ensuring thread safety.
+ * <p>
+ * Key features:
+ * - Automatic context setup and cleanup
+ * - Support for nested UnitOfWork with context preservation
+ * - Exception-safe cleanup using try-finally blocks
+ * - ThreadLocal leak prevention
+ * - Integration with distributed tracing systems
+ * <p>
+ * Thread Safety: This class is thread-safe and properly manages ThreadLocal cleanup to prevent
+ * memory leaks in long-running applications.
+ */
+public record ProcessInstanceAwareUnitOfWork(UnitOfWork delegate, String processInstanceId) implements UnitOfWork {

Review Comment:
   It is used in the UnitOfWorkExecutor class here https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094/files#diff-54fd41143c56c0facf0c8e2fe100076864635ae96d95fc1e255d48b521e58e81R73



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "ricardozanini (via GitHub)" <gi...@apache.org>.
ricardozanini commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3576066954

   @fjtirado @gmunozfe can you please take a look?


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [NO-ISSUE] Implement process instance aware logging and context management [incubator-kie-kogito-runtimes]

Posted by "kie-ci3 (via GitHub)" <gi...@apache.org>.
kie-ci3 commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3408497516

   
   **PR job** `#6` was: **UNSTABLE**
   Possible explanation: This should be test failures
   
   
   <details>
   <summary><b>Reproducer</b></summary>
   
   
   
   build-chain build full_downstream  -f 'https://raw.githubusercontent.com/${AUTHOR:apache}/incubator-kie-kogito-pipelines/${BRANCH:main}/.ci/buildchain-config-pr-cdb.yaml' -o 'bc' -p apache/incubator-kie-kogito-runtimes -u https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094 --skipParallelCheckout
   
   NOTE: To install the build-chain tool, please refer to https://github.com/kiegroup/github-action-build-chain#local-execution
   
   </details>
   
   
   Please look here: https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/6/display/redirect
   
   **Test results:**
   - PASSED: 3682
   - FAILED: 4
   
   Those are the test failures: 
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/6/testReport/org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it/KnativeServingAddonIT/___/">org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it.KnativeServingAddonIT.(?)</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:351)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:322)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:336)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:556)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:346)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:909)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:492)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/6/testReport/org.kie.kogito.addons.quarkus.kubernetes/ConfigValueExpanderIT/test/">org.kie.kogito.addons.quarkus.kubernetes.ConfigValueExpanderIT.test</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:351)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:322)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:336)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:556)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:346)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:909)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:492)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/6/testReport/org.kie.kogito.quarkus.workflows/ProcessInstanceLoggingIT/testGeneralContextInNonProcessLogs/">org.kie.kogito.quarkus.workflows.ProcessInstanceLoggingIT.testGeneralContextInNonProcessLogs</a></summary>
   [Should have general context logs] <br/>Expecting actual:<br/>  0L<br/>to be greater than:<br/>  0L<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/6/testReport/org.kie.kogito.quarkus.token.persistence.workflows/TokenExchangeIT/tokenExchange/">org.kie.kogito.quarkus.token.persistence.workflows.TokenExchangeIT.tokenExchange</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:351)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:322)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:336)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:556)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:346)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:909)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:492)<br/> ... 18 more<br/>
   </details>
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gabriel-farache (via GitHub)" <gi...@apache.org>.
gabriel-farache commented on code in PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#discussion_r2581560386


##########
kogito-test-utils/src/main/java/org/kie/kogito/test/utils/JsonProcessInstanceLogAnalyzer.java:
##########
@@ -0,0 +1,559 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.kie.kogito.test.utils;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.time.format.DateTimeParseException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.fail;
+
+/**
+ * Utility class for analyzing process instance aware logging in JSON format.
+ * Supports parsing JSON log format with MDC fields including processInstanceId.
+ * This class replaces pipe-delimited format parsing for machine-consumable JSON logs.
+ */
+public class JsonProcessInstanceLogAnalyzer {
+
+    private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
+
+    // Common timestamp patterns in JSON logs
+    private static final DateTimeFormatter[] TIMESTAMP_FORMATTERS = {
+            DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"),
+            DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSX"),
+            DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS"),
+            DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"),
+            DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss,SSS"),
+            DateTimeFormatter.ISO_LOCAL_DATE_TIME
+    };
+
+    /**
+     * Represents a single JSON log entry with all its components.
+     */
+    public static class JsonLogEntry {
+        public final LocalDateTime timestamp;
+        public final String level;
+        public final String loggerName;
+        public final String message;
+        public final Map<String, String> mdc;
+        public final String threadName;
+        public final String sequenceNumber;
+        public final JsonNode rawJson;
+
+        public JsonLogEntry(LocalDateTime timestamp, String level, String loggerName,
+                String message, Map<String, String> mdc, String threadName,
+                String sequenceNumber, JsonNode rawJson) {
+            this.timestamp = timestamp;
+            this.level = level != null ? level : "INFO";
+            this.loggerName = loggerName != null ? loggerName : "unknown.logger";
+            this.message = message != null ? message : "";
+            this.mdc = mdc != null ? new HashMap<>(mdc) : new HashMap<>();
+            this.threadName = threadName;
+            this.sequenceNumber = sequenceNumber;
+            this.rawJson = rawJson;
+        }
+
+        /**
+         * Get the process instance ID from MDC.
+         */
+        public String getProcessInstanceId() {
+            return mdc.get("processInstanceId");
+        }
+
+        /**
+         * Check if this log entry has a process instance ID.
+         */
+        public boolean hasProcessInstance() {
+            String processInstanceId = getProcessInstanceId();
+            return processInstanceId != null && !processInstanceId.trim().isEmpty();
+        }
+
+        /**
+         * Check if this log entry is general context (no process instance ID).
+         */
+        public boolean isGeneralContext() {
+            return !hasProcessInstance();
+        }
+
+        /**
+         * Get trace ID from MDC if available.
+         */
+        public String getTraceId() {
+            return mdc.get("traceId");
+        }
+
+        /**
+         * Get span ID from MDC if available.
+         */
+        public String getSpanId() {
+            return mdc.get("spanId");
+        }
+
+        @Override
+        public String toString() {
+            return String.format("JsonLogEntry{timestamp=%s, level=%s, processInstanceId=%s, logger=%s, message=%s}",
+                    timestamp, level, getProcessInstanceId(), loggerName, message);
+        }
+    }
+
+    /**
+     * Statistics about JSON log entries for analysis.
+     */
+    public static class JsonLogStatistics {
+        public final long totalLogs;
+        public final long processSpecificLogs;
+        public final long generalContextLogs;
+        public final Map<String, Long> logsByProcessInstance;
+        public final Map<String, Long> logsByLevel;
+        public final Map<String, Long> logsByLogger;
+        public final long logsWithTracing;
+
+        public JsonLogStatistics(List<JsonLogEntry> entries) {
+            this.totalLogs = entries.size();
+            this.processSpecificLogs = entries.stream().filter(JsonLogEntry::hasProcessInstance).count();
+            this.generalContextLogs = entries.stream().filter(JsonLogEntry::isGeneralContext).count();
+            this.logsByProcessInstance = entries.stream()
+                    .collect(Collectors.groupingBy(
+                            entry -> entry.hasProcessInstance() ? entry.getProcessInstanceId() : "",
+                            Collectors.counting()));
+            this.logsByLevel = entries.stream()
+                    .collect(Collectors.groupingBy(entry -> entry.level, Collectors.counting()));
+            this.logsByLogger = entries.stream()
+                    .collect(Collectors.groupingBy(entry -> entry.loggerName, Collectors.counting()));
+            this.logsWithTracing = entries.stream()
+                    .filter(entry -> entry.getTraceId() != null)
+                    .count();
+        }
+
+        @Override
+        public String toString() {
+            return String.format(
+                    "JsonLogStatistics{total=%d, processSpecific=%d, general=%d, byProcess=%s, byLevel=%s, withTracing=%d}",
+                    totalLogs, processSpecificLogs, generalContextLogs, logsByProcessInstance, logsByLevel, logsWithTracing);
+        }
+    }
+
+    /**
+     * Parse JSON log file with multiline support and resilient error handling.
+     */
+    public static List<JsonLogEntry> parseJsonLogFile(Path logFile) throws IOException {
+        List<String> lines = Files.readAllLines(logFile);
+        List<JsonLogEntry> entries = new ArrayList<>();
+        AtomicInteger malformedLineCount = new AtomicInteger(0);
+        AtomicInteger lineNumber = new AtomicInteger(0);
+
+        for (String line : lines) {
+            lineNumber.incrementAndGet();
+
+            if (line.trim().isEmpty()) {
+                continue; // Skip empty lines
+            }
+
+            try {
+                JsonLogEntry entry = parseJsonLogLine(line, malformedLineCount, lineNumber.get());
+                if (entry != null) {
+                    entries.add(entry);
+                }
+            } catch (Exception e) {
+                malformedLineCount.incrementAndGet();
+                System.err.printf("Warning: Failed to parse JSON log line %d: %s - Error: %s%n",
+                        lineNumber.get(), line.substring(0, Math.min(100, line.length())), e.getMessage());
+            }
+        }
+
+        // Log statistics about parsing
+        if (malformedLineCount.get() > 0) {
+            System.err.printf("Warning: Encountered %d malformed/problematic lines out of %d total lines while parsing %s%n",
+                    malformedLineCount.get(), lineNumber.get(), logFile.getFileName());
+        }
+
+        return entries;
+    }
+
+    /**
+     * Parse a single JSON log line into a JsonLogEntry.
+     */
+    private static JsonLogEntry parseJsonLogLine(String line, AtomicInteger malformedLineCount, int lineNumber) {
+        try {
+            JsonNode jsonNode = OBJECT_MAPPER.readTree(line);
+
+            // Extract timestamp
+            LocalDateTime timestamp = parseTimestamp(jsonNode, malformedLineCount);
+
+            // Extract standard fields
+            String level = getTextValue(jsonNode, "level");
+            String loggerName = getTextValue(jsonNode, "loggerName");
+            String message = getTextValue(jsonNode, "message");
+            String threadName = getTextValue(jsonNode, "thread");
+            String sequenceNumber = getTextValue(jsonNode, "sequenceNumber");
+
+            // Extract MDC fields
+            Map<String, String> mdc = extractMdcFields(jsonNode);
+
+            return new JsonLogEntry(timestamp, level, loggerName, message, mdc, threadName, sequenceNumber, jsonNode);
+
+        } catch (JsonProcessingException e) {
+            // Try fallback parsing for non-JSON lines
+            return tryFallbackParsing(line, malformedLineCount, lineNumber);
+        }
+    }
+
+    /**
+     * Extract MDC fields from JSON log entry.
+     */
+    private static Map<String, String> extractMdcFields(JsonNode jsonNode) {
+        Map<String, String> mdc = new HashMap<>();
+
+        // Look for MDC in common field names
+        JsonNode mdcNode = jsonNode.get("mdc");
+        if (mdcNode == null) {
+            mdcNode = jsonNode.get("MDC");
+        }
+        if (mdcNode == null) {
+            mdcNode = jsonNode.get("context");
+        }
+
+        if (mdcNode != null && mdcNode.isObject()) {
+            mdcNode.fields().forEachRemaining(entry -> {
+                String key = entry.getKey();
+                JsonNode value = entry.getValue();
+                if (value.isTextual()) {
+                    mdc.put(key, value.asText());
+                } else if (!value.isNull()) {
+                    mdc.put(key, value.toString());
+                }
+            });
+        }
+
+        // Also check for direct MDC fields at root level (some formats)
+        String[] commonMdcFields = { "processInstanceId", "traceId", "spanId", "userId", "correlationId" };
+        for (String field : commonMdcFields) {
+            JsonNode fieldNode = jsonNode.get(field);
+            if (fieldNode != null && fieldNode.isTextual()) {
+                mdc.put(field, fieldNode.asText());
+            }
+        }
+
+        return mdc;
+    }
+
+    /**
+     * Parse timestamp from JSON node using multiple format attempts.
+     */
+    private static LocalDateTime parseTimestamp(JsonNode jsonNode, AtomicInteger malformedLineCount) {
+        String timestampStr = getTextValue(jsonNode, "timestamp");
+        if (timestampStr == null) {
+            timestampStr = getTextValue(jsonNode, "@timestamp");
+        }
+        if (timestampStr == null) {
+            timestampStr = getTextValue(jsonNode, "time");
+        }
+
+        if (timestampStr != null) {
+            for (DateTimeFormatter formatter : TIMESTAMP_FORMATTERS) {
+                try {
+                    return LocalDateTime.parse(timestampStr, formatter);
+                } catch (DateTimeParseException e) {
+                    // Try next formatter
+                }
+            }
+        }
+
+        // Fallback to current time
+        malformedLineCount.incrementAndGet();
+        return LocalDateTime.now();
+    }
+
+    /**
+     * Get text value from JSON node, handling null checks.
+     */
+    private static String getTextValue(JsonNode node, String fieldName) {
+        JsonNode fieldNode = node.get(fieldName);
+        return fieldNode != null && !fieldNode.isNull() ? fieldNode.asText() : null;
+    }
+
+    /**
+     * Try fallback parsing for non-JSON lines (stack traces, etc.).
+     */
+    private static JsonLogEntry tryFallbackParsing(String line, AtomicInteger malformedLineCount, int lineNumber) {
+        // This could be a stack trace or multiline continuation
+        // For now, create a simple entry
+        malformedLineCount.incrementAndGet();
+
+        Map<String, String> emptyMdc = new HashMap<>();
+        return new JsonLogEntry(
+                LocalDateTime.now(),
+                "INFO",
+                "unknown.logger",
+                line,
+                emptyMdc,

Review Comment:
   it's more that the parsed JSON from the log line may contains MDC/context data and if that is the case, those data must be put in the `mdc` entry of  the `JsonLogEntry`
   So if the line parsing fails, as a fallback, we directly set the line as string message and as it is a String there is no way to potentially parse the MDC/Context data hold but the line
   Having the empty MDC is an indication that the line is not a proper JSON but it's not the main goal here; having the `unknown.logger` logger name indicates the same



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gabriel-farache (via GitHub)" <gi...@apache.org>.
gabriel-farache commented on code in PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#discussion_r2581603152


##########
kogito-test-utils/src/main/java/org/kie/kogito/test/utils/ProcessInstanceLoggingTestBase.java:
##########
@@ -0,0 +1,244 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.kie.kogito.test.utils;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.time.Duration;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import io.restassured.http.ContentType;
+
+import static io.restassured.RestAssured.given;
+import static org.awaitility.Awaitility.await;
+
+/**
+ * Base class for process instance logging tests providing common functionality.
+ * This class eliminates code duplication between different logging test implementations.
+ */
+public abstract class ProcessInstanceLoggingTestBase {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(ProcessInstanceLoggingTestBase.class);
+
+    /**
+     * Get the configured log file path.
+     *
+     * @return Path to the Quarkus log file
+     */
+    protected Path getLogFilePath() {
+        String logPath = System.getProperty("quarkus.log.file.path", "target/quarkus.log");
+        return Paths.get(logPath);
+    }
+
+    /**
+     * Get all log files including rotated ones in chronological order (newest first).
+     * Handles Quarkus default rotation: quarkus.log, quarkus.log.1, quarkus.log.2, etc.
+     *
+     * @return List of log file paths sorted by modification time (newest first)
+     * @throws IOException if directory access fails
+     */
+    protected List<Path> getAllLogFiles() throws IOException {
+        Path logFile = getLogFilePath();
+        Path logDir = logFile.getParent();
+        String baseName = logFile.getFileName().toString();
+
+        List<Path> logFiles = new ArrayList<>();
+
+        // Add main log file if it exists
+        if (Files.exists(logFile)) {
+            logFiles.add(logFile);
+        }
+
+        // Look for rotated files: baseName.1, baseName.2, etc.
+        for (int i = 1; i <= 10; i++) { // Check up to 10 rotated files (more than default max-backup-index=5)

Review Comment:
   done



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "kie-ci3 (via GitHub)" <gi...@apache.org>.
kie-ci3 commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3718654209

   
   **PR job** `#43` was: **UNSTABLE**
   Possible explanation: This should be test failures
   
   
   <details>
   <summary><b>Reproducer</b></summary>
   
   
   
   build-chain build full_downstream  -f 'https://raw.githubusercontent.com/${AUTHOR:apache}/incubator-kie-kogito-pipelines/${BRANCH:main}/.ci/buildchain-config-pr-cdb.yaml' -o 'bc' -p apache/incubator-kie-kogito-runtimes -u https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094 --skipParallelCheckout
   
   NOTE: To install the build-chain tool, please refer to https://github.com/kiegroup/github-action-build-chain#local-execution
   
   </details>
   
   
   Please look here: https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/43/display/redirect
   
   **Test results:**
   - PASSED: 3840
   - FAILED: 4
   
   Those are the test failures: 
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/43/testReport/org.kie.kogito.addons.jwt.it/JwtParserIT/testJwtParserWorkflowEndToEnd/">org.kie.kogito.addons.jwt.it.JwtParserIT.testJwtParserWorkflowEndToEnd</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/43/testReport/org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it/KnativeServingAddonIT/___/">org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it.KnativeServingAddonIT.(?)</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/43/testReport/org.kie.kogito.addons.quarkus.kubernetes/ConfigValueExpanderIT/test/">org.kie.kogito.addons.quarkus.kubernetes.ConfigValueExpanderIT.test</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/43/testReport/org.kie.kogito.quarkus.token.persistence.workflows/TokenExchangeIT/tokenExchange/">org.kie.kogito.quarkus.token.persistence.workflows.TokenExchangeIT.tokenExchange</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "kie-ci3 (via GitHub)" <gi...@apache.org>.
kie-ci3 commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3719814502

   
   **PR job** `#46` was: **UNSTABLE**
   Possible explanation: This should be test failures
   
   
   <details>
   <summary><b>Reproducer</b></summary>
   
   
   
   build-chain build full_downstream  -f 'https://raw.githubusercontent.com/${AUTHOR:apache}/incubator-kie-kogito-pipelines/${BRANCH:main}/.ci/buildchain-config-pr-cdb.yaml' -o 'bc' -p apache/incubator-kie-kogito-runtimes -u https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094 --skipParallelCheckout
   
   NOTE: To install the build-chain tool, please refer to https://github.com/kiegroup/github-action-build-chain#local-execution
   
   </details>
   
   
   Please look here: https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/46/display/redirect
   
   **Test results:**
   - PASSED: 3809
   - FAILED: 4
   
   Those are the test failures: 
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/46/testReport/org.kie.kogito.addons.jwt.it/JwtParserIT/testJwtParserWorkflowEndToEnd/">org.kie.kogito.addons.jwt.it.JwtParserIT.testJwtParserWorkflowEndToEnd</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/46/testReport/org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it/KnativeServingAddonIT/___/">org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it.KnativeServingAddonIT.(?)</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/46/testReport/org.kie.kogito.addons.quarkus.kubernetes/ConfigValueExpanderIT/test/">org.kie.kogito.addons.quarkus.kubernetes.ConfigValueExpanderIT.test</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/46/testReport/org.kie.kogito.quarkus.token.persistence.workflows/TokenExchangeIT/tokenExchange/">org.kie.kogito.quarkus.token.persistence.workflows.TokenExchangeIT.tokenExchange</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "wmedvede (via GitHub)" <gi...@apache.org>.
wmedvede commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3666777555

   @gabriel-farache Regarding the filtering, I think the initial attempt to "reduce" the number of generated "Spans" is good, and we shoud try this approach by generating a Span for each "logical" WF state.  
   
   I think we should "merge" the intial idea, with a more acurate way to "group" the jbpm nodes, with the "real" WF states. Somethinig that IIRC, is currently also being done in the Dev UI, to make that view match the WF states, and not the jbpm nodes that implement the states.
   
   To make the correspondence between "which jbpm" nodes belongs to the same WF state, each jbpm node, has "state" attribute in the metadata. And, that "state" attribute can then be used to "group" the jbpm nodes into the WF state.
   
   Below we can see the generated  Process corresponding to the greet WF.
   
   And for the WF state -> ChooseOnLanguage, we can see that the follwoing jbpm nodes are really implementing it.
   
   ```
           startNode1.name("Start");
           startNode1.interrupting(false);
           startNode1.metaData("UniqueId", "1");
           startNode1.metaData("EventType", "none");
           startNode1.metaData("state", "ChooseOnLanguage");
           
           splitNode3.name("ChooseOnLanguage");
           splitNode3.type(2);
           splitNode3.metaData("UniqueId", "3");
           splitNode3.metaData("MetricName", "ChooseOnLanguage");
           splitNode3.metaData("Variable", "workflowdata");
           splitNode3.metaData("state", "ChooseOnLanguage");
           splitNode3.metaData("Default", "3_12");
   ```
   
   While the "GreetPerson" state is composed of this jbpm nodes:
   
   ```
           endNode2.name("End");
           endNode2.terminate(true);
           endNode2.metaData("UniqueId", "2");
           endNode2.metaData("state", "GreetPerson");
   
   
           compositeContextNode6.name("GreetPerson");
           compositeContextNode6.metaData("UniqueId", "6");
           compositeContextNode6.metaData("MetricName", "GreetPerson");
           compositeContextNode6.metaData("state", "GreetPerson");
   
           actionNode9.name("greetFunction");
           actionNode9.metaData("UniqueId", "9");
           actionNode9.metaData("action", "greetAction");
           actionNode9.metaData("state", "GreetPerson");
   
   
           joinNode13.name("Join-GreetPerson");
           joinNode13.type(5);
           joinNode13.metaData("UniqueId", "13");
           joinNode13.metaData("state", "GreetPerson");
   ```
           
                  
   
   
   [GreetProcess.java](https://github.com/user-attachments/files/24220049/GreetProcess.java)
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gabriel-farache (via GitHub)" <gi...@apache.org>.
gabriel-farache commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3618520485

   @wmedvede FYI I am able to have thoses lolgs:
   ```
   21:10:10 INFO  traceId=, parentId=, spanId=, sampled= [io.quarkus] (Quarkus Main Thread) Profile dev activated. Live Coding activated.
   21:10:10 INFO  traceId=, parentId=, spanId=, sampled= [io.quarkus] (Quarkus Main Thread) Installed features: [cache, cdi, grpc-server, jackson-jq, kogito-serverless-workflow, messaging, narayana-jta, oidc-client, openapi-generator, opentelemetry, qute, reactive-routes, resteasy, resteasy-client, resteasy-client-jackson, resteasy-jackson, smallrye-context-propagation, smallrye-health, smallrye-openapi, smallrye-reactive-messaging-http, sonataflow-addons-quarkus-opentelemetry, swagger-ui, vertx]
   21:10:10 INFO  traceId=1793b7cc84f513e53b720b7d135e1ca7, parentId=, spanId=f1662214477f50ba, sampled=true [io.qu.de.de.RuntimeUpdatesProcessor] (vert.x-worker-thread-1) Live reload total time: 2.626s 
   21:10:10 INFO  traceId=1793b7cc84f513e53b720b7d135e1ca7, parentId=, spanId=f1662214477f50ba, sampled=true [or.ki.ko.se.wo.de.DevModeServerlessWorkflowLogger] (executor-thread-1) Property 'workflowdatainput' changed value from: 'null', to: '{"name":"string","language":"string"}'
   21:10:10 INFO  traceId=1793b7cc84f513e53b720b7d135e1ca7, parentId=, spanId=f1662214477f50ba, sampled=true [or.ki.ko.se.wo.de.DevModeServerlessWorkflowLogger] (executor-thread-1) Workflow data change
   {
     "name" : "string",
     "language" : "string"
   }
   
   21:10:10 DEBUG traceId=1793b7cc84f513e53b720b7d135e1ca7, parentId=, spanId=f1662214477f50ba, sampled=true [or.ki.ko.pr.im.AbstractProcessInstance] (executor-thread-1) internal reload process instance c4c7addb-cdc0-4c2c-81cc-28d8cf15d49a
   21:10:10 DEBUG traceId=1793b7cc84f513e53b720b7d135e1ca7, parentId=, spanId=f1662214477f50ba, sampled=true [or.ki.ko.pr.im.AbstractProcessInstance] (executor-thread-1) reconnect process instance c4c7addb-cdc0-4c2c-81cc-28d8cf15d49a
   21:10:10 INFO  traceId=1793b7cc84f513e53b720b7d135e1ca7, parentId=, spanId=f1662214477f50ba, sampled=true [or.ki.ko.se.wo.de.DevModeServerlessWorkflowLogger] (executor-thread-1) Starting workflow 'greet' (c4c7addb-cdc0-4c2c-81cc-28d8cf15d49a)
   21:10:10 INFO  traceId=1793b7cc84f513e53b720b7d135e1ca7, parentId=, spanId=f1662214477f50ba, sampled=true [or.ki.ko.se.wo.de.DevModeServerlessWorkflowLogger] (executor-thread-1) Workflow data 
   {
     "name" : "string",
     "language" : "string"
   }
   
   21:10:10 INFO  traceId=1793b7cc84f513e53b720b7d135e1ca7, parentId=, spanId=f1662214477f50ba, sampled=true [or.ki.ko.se.wo.de.DevModeServerlessWorkflowLogger] (executor-thread-1) Triggered node 'Start' for process 'greet' (c4c7addb-cdc0-4c2c-81cc-28d8cf15d49a)
   21:10:10 INFO  traceId=1793b7cc84f513e53b720b7d135e1ca7, parentId=, spanId=f1662214477f50ba, sampled=true [or.ki.ko.se.wo.de.DevModeServerlessWorkflowLogger] (executor-thread-1) Triggered node 'ChooseOnLanguage' for process 'greet' (c4c7addb-cdc0-4c2c-81cc-28d8cf15d49a)
   21:10:10 DEBUG traceId=1793b7cc84f513e53b720b7d135e1ca7, parentId=, spanId=f1662214477f50ba, sampled=true [or.ki.ko.se.wo.ut.VariablesHelper] (executor-thread-1) Additional variables for expression evaluation are {}
   21:10:10 DEBUG traceId=1793b7cc84f513e53b720b7d135e1ca7, parentId=, spanId=f1662214477f50ba, sampled=true [or.ki.ko.se.wo.ut.VariablesHelper] (executor-thread-1) Additional variables for expression evaluation are {}
   21:10:10 INFO  traceId=1793b7cc84f513e53b720b7d135e1ca7, parentId=, spanId=f1662214477f50ba, sampled=true [or.ki.ko.se.wo.de.DevModeServerlessWorkflowLogger] (executor-thread-1) Triggered node 'Join-GreetInEnglish' for process 'greet' (c4c7addb-cdc0-4c2c-81cc-28d8cf15d49a)
   21:10:10 INFO  traceId=1793b7cc84f513e53b720b7d135e1ca7, parentId=, spanId=f1662214477f50ba, sampled=true [or.ki.ko.se.wo.de.DevModeServerlessWorkflowLogger] (executor-thread-1) Triggered node 'GreetInEnglish' for process 'greet' (c4c7addb-cdc0-4c2c-81cc-28d8cf15d49a)
   21:10:10 INFO  traceId=1793b7cc84f513e53b720b7d135e1ca7, parentId=, spanId=f1662214477f50ba, sampled=true [or.ki.ko.se.wo.de.DevModeServerlessWorkflowLogger] (executor-thread-1) Property 'workflowdata.greeting' changed value from: 'null', to: '"Hello from YAML Workflow"'
   21:10:10 INFO  traceId=1793b7cc84f513e53b720b7d135e1ca7, parentId=, spanId=f1662214477f50ba, sampled=true [or.ki.ko.se.wo.de.DevModeServerlessWorkflowLogger] (executor-thread-1) Triggered node 'Join-GreetPerson' for process 'greet' (c4c7addb-cdc0-4c2c-81cc-28d8cf15d49a)
   21:10:10 INFO  traceId=1793b7cc84f513e53b720b7d135e1ca7, parentId=, spanId=f1662214477f50ba, sampled=true [or.ki.ko.se.wo.de.DevModeServerlessWorkflowLogger] (executor-thread-1) Triggered node 'GreetPerson' for process 'greet' (c4c7addb-cdc0-4c2c-81cc-28d8cf15d49a)
   21:10:10 INFO  traceId=1793b7cc84f513e53b720b7d135e1ca7, parentId=, spanId=f1662214477f50ba, sampled=true [or.ki.ko.se.wo.de.DevModeServerlessWorkflowLogger] (executor-thread-1) Triggered node 'greetFunction' for process 'greet' (c4c7addb-cdc0-4c2c-81cc-28d8cf15d49a)
   21:10:10 INFO  traceId=1793b7cc84f513e53b720b7d135e1ca7, parentId=, spanId=f1662214477f50ba, sampled=true [or.ki.ko.se.wo.ac.SysoutAction] (executor-thread-1) $.greeting $.name
   21:10:10 INFO  traceId=1793b7cc84f513e53b720b7d135e1ca7, parentId=, spanId=f1662214477f50ba, sampled=true [or.ki.ko.se.wo.de.DevModeServerlessWorkflowLogger] (executor-thread-1) Triggered node 'End' for process 'greet' (c4c7addb-cdc0-4c2c-81cc-28d8cf15d49a)
   21:10:10 INFO  traceId=1793b7cc84f513e53b720b7d135e1ca7, parentId=, spanId=f1662214477f50ba, sampled=true [or.ki.ko.se.wo.de.DevModeServerlessWorkflowLogger] (executor-thread-1) Workflow 'greet' (c4c7addb-cdc0-4c2c-81cc-28d8cf15d49a) completed
   21:10:10 DEBUG traceId=1793b7cc84f513e53b720b7d135e1ca7, parentId=, spanId=f1662214477f50ba, sampled=true [or.ki.ko.pr.im.AbstractProcessInstance] (executor-thread-1) internal unload process instance c4c7addb-cdc0-4c2c-81cc-28d8cf15d49a
   21:10:10 DEBUG traceId=1793b7cc84f513e53b720b7d135e1ca7, parentId=, spanId=f1662214477f50ba, sampled=true [or.ki.ko.pr.im.AbstractProcessInstance] (executor-thread-1) disconnect process instance state c4c7addb-cdc0-4c2c-81cc-28d8cf15d49a
   ```
   But I see nothing in Jaeger because the `TestSpanExporterProducer$InMemorySpanExporter` is used, I am currently trying to solve this as the integration tests need it to run properly, I'll let you know once I get something working


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "wmedvede (via GitHub)" <gi...@apache.org>.
wmedvede commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3611338355

   > @wmedvede So I need to move the Otel code from quarkus/extensions/kogito-quarkus-serverless-workflow-otel-extension to addons/common/openTelemetry (with package name changed from sonataflow-quarkus-otel to addons-sonataflow-otel)?
   
   To make it more consistent with the quarkus opentelemetry extension nomeclature `quarkus-opentelemetry' lets do this:
   
   <img width="892" height="691" alt="Screenshot from 2025-12-04 09-56-38" src="https://github.com/user-attachments/assets/92f93fc4-b81a-4525-8380-a4e0b0f2a280" />
   
   In `quarkus/adddons` we create:
   
   	/opentelemetry
   		/deployment:
   			<groupId>org.apache.kie.sonataflow</groupId>
   		        <artifactId>sonataflow-addons-quarkus-opentelemetry-deployment</artifactId>		
   		        
   		        package: org.kie.kogito.quarkus.serverless.workflow.opentelemetry.deployment
   		        
   					           
   		/integration-tests
   			<groupId>org.apache.kie.sonataflow</groupId>
   		        <artifactId>sonataflow-addons-quarkus-opentelemetry-integration-tests</artifactId>		
   					           
   
   		/runtime
   			<groupId>org.apache.kie.sonataflow</groupId>
   		        <artifactId>sonataflow-addons-quarkus-opentelemetry</artifactId>		
   		
   			package: org.kie.kogito.quarkus.serverless.workflow.opentelemetry.runtime
   
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [NO-ISSUE] Implement process instance aware logging and context management [incubator-kie-kogito-runtimes]

Posted by "kie-ci3 (via GitHub)" <gi...@apache.org>.
kie-ci3 commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3427698362

   
   **PR job** `#9` was: **UNSTABLE**
   Possible explanation: This should be test failures
   
   
   <details>
   <summary><b>Reproducer</b></summary>
   
   
   
   build-chain build full_downstream  -f 'https://raw.githubusercontent.com/${AUTHOR:apache}/incubator-kie-kogito-pipelines/${BRANCH:main}/.ci/buildchain-config-pr-cdb.yaml' -o 'bc' -p apache/incubator-kie-kogito-runtimes -u https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094 --skipParallelCheckout
   
   NOTE: To install the build-chain tool, please refer to https://github.com/kiegroup/github-action-build-chain#local-execution
   
   </details>
   
   
   Please look here: https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/9/display/redirect
   
   **Test results:**
   - PASSED: 3724
   - FAILED: 1
   
   Those are the test failures: 
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/9/testReport/org.kie.kogito.quarkus.token.persistence.workflows/TokenExchangeIT/tokenExchange/">org.kie.kogito.quarkus.token.persistence.workflows.TokenExchangeIT.tokenExchange</a></summary>
   <br/>Expected size to be between: 2 and 4 but was: 0 in:<br/>[]
   </details>
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [NO-ISSUE] Implement process instance aware logging and context management [incubator-kie-kogito-runtimes]

Posted by "kie-ci3 (via GitHub)" <gi...@apache.org>.
kie-ci3 commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3401483569

   
   **PR job** `#3` was: **UNSTABLE**
   Possible explanation: This should be test failures
   
   
   <details>
   <summary><b>Reproducer</b></summary>
   
   
   
   build-chain build full_downstream  -f 'https://raw.githubusercontent.com/${AUTHOR:apache}/incubator-kie-kogito-pipelines/${BRANCH:main}/.ci/buildchain-config-pr-cdb.yaml' -o 'bc' -p apache/incubator-kie-kogito-runtimes -u https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094 --skipParallelCheckout
   
   NOTE: To install the build-chain tool, please refer to https://github.com/kiegroup/github-action-build-chain#local-execution
   
   </details>
   
   
   Please look here: https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/3/display/redirect
   
   **Test results:**
   - PASSED: 2642
   - FAILED: 2
   
   Those are the test failures: 
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/3/testReport/org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it/KnativeServingAddonIT/___/">org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it.KnativeServingAddonIT.(?)</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:351)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:322)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:336)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:556)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:346)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:909)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:492)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/3/testReport/org.kie.kogito.addons.quarkus.kubernetes/ConfigValueExpanderIT/test/">org.kie.kogito.addons.quarkus.kubernetes.ConfigValueExpanderIT.test</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:351)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:322)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:336)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:556)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:346)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:909)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:492)<br/> ... 18 more<br/>
   </details>
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "kie-ci3 (via GitHub)" <gi...@apache.org>.
kie-ci3 commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3726443517

   
   **PR job** `#48` was: **UNSTABLE**
   Possible explanation: This should be test failures
   
   
   <details>
   <summary><b>Reproducer</b></summary>
   
   
   
   build-chain build full_downstream  -f 'https://raw.githubusercontent.com/${AUTHOR:apache}/incubator-kie-kogito-pipelines/${BRANCH:main}/.ci/buildchain-config-pr-cdb.yaml' -o 'bc' -p apache/incubator-kie-kogito-runtimes -u https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094 --skipParallelCheckout
   
   NOTE: To install the build-chain tool, please refer to https://github.com/kiegroup/github-action-build-chain#local-execution
   
   </details>
   
   
   Please look here: https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/48/display/redirect
   
   **Test results:**
   - PASSED: 3822
   - FAILED: 5
   
   Those are the test failures: 
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/48/testReport/org.kie.kogito.addons.jwt.it/JwtParserIT/testJwtParserWorkflowEndToEnd/">org.kie.kogito.addons.jwt.it.JwtParserIT.testJwtParserWorkflowEndToEnd</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/48/testReport/org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it/KnativeServingAddonIT/___/">org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it.KnativeServingAddonIT.(?)</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/48/testReport/org.kie.kogito.addons.quarkus.kubernetes/ConfigValueExpanderIT/test/">org.kie.kogito.addons.quarkus.kubernetes.ConfigValueExpanderIT.test</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/48/testReport/org.kie.kogito.quarkus.serverless.workflow.opentelemetry/OpenTelemetryRestartIT/testCompleteScenarioWithRestarts/">org.kie.kogito.quarkus.serverless.workflow.opentelemetry.OpenTelemetryRestartIT.testCompleteScenarioWithRestarts</a></summary>
   Assertion condition defined as a Lambda expression in org.kie.kogito.quarkus.serverless.workflow.opentelemetry.OpenTelemetryRestartIT [Scenario 1: Should have at least 7 spans (one per state)] <br/>Expecting size of:<br/>  []<br/>to be greater than or equal to 7 but was 0 within 10 seconds.
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/48/testReport/org.kie.kogito.quarkus.token.persistence.workflows/TokenExchangeIT/tokenExchange/">org.kie.kogito.quarkus.token.persistence.workflows.TokenExchangeIT.tokenExchange</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "kie-ci3 (via GitHub)" <gi...@apache.org>.
kie-ci3 commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3576823168

   
   **PR job** `#20` was: **UNSTABLE**
   Possible explanation: This should be test failures
   
   
   <details>
   <summary><b>Reproducer</b></summary>
   
   
   
   build-chain build full_downstream  -f 'https://raw.githubusercontent.com/${AUTHOR:apache}/incubator-kie-kogito-pipelines/${BRANCH:main}/.ci/buildchain-config-pr-cdb.yaml' -o 'bc' -p apache/incubator-kie-kogito-runtimes -u https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094 --skipParallelCheckout
   
   NOTE: To install the build-chain tool, please refer to https://github.com/kiegroup/github-action-build-chain#local-execution
   
   </details>
   
   
   Please look here: https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/20/display/redirect
   
   **Test results:**
   - PASSED: 3759
   - FAILED: 3
   
   Those are the test failures: 
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/20/testReport/org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it/KnativeServingAddonIT/___/">org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it.KnativeServingAddonIT.(?)</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/20/testReport/org.kie.kogito.addons.quarkus.kubernetes/ConfigValueExpanderIT/test/">org.kie.kogito.addons.quarkus.kubernetes.ConfigValueExpanderIT.test</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/20/testReport/org.kie.kogito.quarkus.token.persistence.workflows/TokenExchangeIT/tokenExchange/">org.kie.kogito.quarkus.token.persistence.workflows.TokenExchangeIT.tokenExchange</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gabriel-farache (via GitHub)" <gi...@apache.org>.
gabriel-farache commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3678705373

   > @wmedvede Currently, with what I pushed, using https://github.com/gabriel-farache/test-sonataflow-opentelemetry/blob/main/src/main/resources/yamlgreet.sw.yml this is the traces I get [trace.json](https://github.com/user-attachments/files/24272157/trace.json) <img alt="image" width="1917" height="420" src="https://private-user-images.githubusercontent.com/3036508/528878895-52a5c775-2f2f-4608-979c-78d5bc629938.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NjYzMTYzNzQsIm5iZiI6MTc2NjMxNjA3NCwicGF0aCI6Ii8zMDM2NTA4LzUyODg3ODg5NS01MmE1Yzc3NS0yZjJmLTQ2MDgtOTc5Yy03OGQ1YmM2Mjk5MzgucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI1MTIyMSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNTEyMjFUMTEyMTE0WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9YTQ4YTAzMWM4M2VjNzk1ZmY0ODA2YzA4MzI3YTdjNWE1NmIwZjAxNDM1ZGEyZTVlYzIyYWNmNjFi
 NDNkZjBjOSZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.22Cb83hPAKaFQUPCeWQfM-ovTxdN1Ig76O3zr3gG7Fk">
   > 
   > This looks fine except for the span `sonataflow.process.anothergreetSubflow.execute` being a child of `GreetInEnglish` instead of `ExecuteSubflow` span.
   > 
   > Do we want to "force" a new trace creation for `ExecuteSubflow` after the sleep and for `waitForEvent`? For any suspension actually
   
   FYI the last commit solved the issue with the span hierarchy 


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "pkliczewski (via GitHub)" <gi...@apache.org>.
pkliczewski commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3738828596

   :tada: 


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gabriel-farache (via GitHub)" <gi...@apache.org>.
gabriel-farache commented on code in PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#discussion_r2588610278


##########
jbpm/jbpm-flow/src/main/java/org/kie/kogito/process/impl/AbstractProcessInstance.java:
##########
@@ -225,9 +226,35 @@ protected void reconnect() {
         }
         getProcessRuntime().getProcessInstanceManager().setLock(((MutableProcessInstances<T>) process.instances()).lock());
         processInstance.setMetaData(KOGITO_PROCESS_INSTANCE, this);
+
+        restoreProcessInstanceContext();
+
         processInstance.reconnect();
     }
 
+    private void restoreProcessInstanceContext() {
+        Map<String, List<String>> headers = processInstance.getHeaders();
+        if (headers != null && !headers.isEmpty()) {
+            Map<String, String> contextMap = convertHeadersToContextMap(headers);
+            if (!contextMap.isEmpty()) {
+                org.kie.kogito.services.context.ProcessInstanceContext.setContextFromAsync(contextMap);

Review Comment:
   Ah! yes, you are right; I was too focused on inter-thread interaction that it slipped my mind that even within the same thread, this could be called by another part of the code which will result in context loss
   
   Let me add
   ```
   Map<String, String> currentMdc = MDC.getCopyOfContextMap();
         if (currentMdc != null) {
           contextMap.putAll(currentMdc); // Preserve existing
         }
   ```
   in the top of `setContextFromAsync` to save the MDC already present
   



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "wmedvede (via GitHub)" <gi...@apache.org>.
wmedvede commented on code in PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#discussion_r2585264363


##########
jbpm/jbpm-flow/src/main/java/org/kie/kogito/process/impl/AbstractProcessInstance.java:
##########
@@ -225,9 +226,35 @@ protected void reconnect() {
         }
         getProcessRuntime().getProcessInstanceManager().setLock(((MutableProcessInstances<T>) process.instances()).lock());
         processInstance.setMetaData(KOGITO_PROCESS_INSTANCE, this);
+
+        restoreProcessInstanceContext();
+
         processInstance.reconnect();
     }
 
+    private void restoreProcessInstanceContext() {
+        Map<String, List<String>> headers = processInstance.getHeaders();
+        if (headers != null && !headers.isEmpty()) {
+            Map<String, String> contextMap = convertHeadersToContextMap(headers);
+            if (!contextMap.isEmpty()) {
+                org.kie.kogito.services.context.ProcessInstanceContext.setContextFromAsync(contextMap);

Review Comment:
   This is good, so we restore the ProcessInstance, and then, we "restore" the context in the MDC by doing .ProcessInstanceContext.setContextFromAsync(contextMap).
   
   Then, internally, the ProcessInstanceContext will do: 
          MDC.setContextMap(theNewValues);
   :point_up: and now the MDC context map will have the new values. (cleaning the existing ones)
   
   But considering that the invocation to the  restoreProcessInstanceContext() was produced by a caller thread, that is not under our control, aren't where here making the caller thread to loose any potential values stored by him in the MDC?
   
   Does it make sense?
   
   Maybe es need a sort of Merge. Thinking aloud.



##########
quarkus/addons/token-exchange/runtime/src/main/java/org/kie/kogito/addons/quarkus/token/exchange/cache/TokenEvictionHandler.java:
##########
@@ -96,28 +116,41 @@ private void onTokenExpired(String cacheKey, CachedTokens tokens, RemovalCause c
 
     /**
      * Refreshes tokens using a cached refresh token and updates the cache.
-     * 
+     * The process instance context is set based on the cache key.
+     *
      * @param cacheKey The cache key for the tokens being refreshed
      * @param refreshToken The refresh token to use for getting new tokens
      */
     private void refreshWithCachedToken(String cacheKey, String refreshToken) {
+        // Extract process instance ID from cache key for context propagation
+        String processInstanceId = CacheUtils.extractProcessInstanceIdFromCacheKey(cacheKey);
+
         tokenRefreshExecutor.submit(() -> {
             try {
+                ProcessInstanceContext.setProcessInstanceId(processInstanceId);

Review Comment:
   related to the comment above, we don't mind, we just set



##########
quarkus/addons/token-exchange/runtime/src/main/java/org/kie/kogito/addons/quarkus/token/exchange/cache/TokenEvictionHandler.java:
##########
@@ -54,29 +56,47 @@ public TokenEvictionHandler(TokenCRUD tokenCRUD) {
 
     /**
      * Creates a removal listener that can be used with Caffeine cache.
-     * 
+     * This listener sets the proper process instance context from the cache key before logging.
+     *
      * @return A removal listener that handles token eviction events
      */
     public RemovalListener<String, CachedTokens> createRemovalListener() {
         return (key, value, cause) -> {
             if (value == null)
                 return;
 
-            LOGGER.info("Token cache eviction for cache key '{}' - Cause: {}", key, cause);
-            onTokenExpired(key, value, cause);
+            // Extract process instance ID from cache key and set context for logging
+            String processInstanceId = CacheUtils.extractProcessInstanceIdFromCacheKey(key);
+            if (processInstanceId != null && !processInstanceId.isEmpty()) {
+                ProcessInstanceContext.setProcessInstanceId(processInstanceId);

Review Comment:
   No Id, we don't set.



##########
addons/common/monitoring/core/src/main/java/org/kie/kogito/monitoring/core/common/process/MetricsProcessEventListener.java:
##########
@@ -134,10 +141,37 @@ protected static double millisToSeconds(long millis) {
         return millis / 1000.0;
     }
 
+    /**
+     * Gets the current process instance ID from MDC for correlation.
+     *
+     * @return the process instance ID, or null if not available
+     */
+    private String getProcessInstanceIdFromContext() {
+        return MDC.get(MDC_PROCESS_INSTANCE_KEY);
+    }
+
+    /**
+     * Logs metric correlation information for debugging and observability.
+     *
+     * @param metricName the name of the metric being recorded
+     * @param processId the process ID
+     * @param processInstanceId the process instance ID (may be null)
+     */
+    private void logMetricCorrelation(String metricName, String processId, String processInstanceId) {
+        if (LOGGER.isDebugEnabled() && processInstanceId != null) {
+            LOGGER.debug("Metric {} for process {} instance {}",
+                    metricName, processId, processInstanceId);
+        }
+    }
+
     @Override
     public void afterProcessStarted(ProcessStartedEvent event) {
         LOGGER.debug("After process started event: {}", event);
         final ProcessInstance processInstance = event.getProcessInstance();
+        String processInstanceId = getProcessInstanceIdFromContext();
+
+        logMetricCorrelation("process_started", processInstance.getProcessId(), processInstanceId);

Review Comment:
   maybe just  logMetricCorrelation("process_started", processInstance.getProcessId(), getProcessInstanceIdFromContext());  if we preserve this log line, and avoid the variable.
   Same for the other invocations.



##########
quarkus/addons/token-exchange/runtime/src/main/java/org/kie/kogito/addons/quarkus/token/exchange/cache/TokenEvictionHandler.java:
##########
@@ -54,29 +56,47 @@ public TokenEvictionHandler(TokenCRUD tokenCRUD) {
 
     /**
      * Creates a removal listener that can be used with Caffeine cache.
-     * 
+     * This listener sets the proper process instance context from the cache key before logging.
+     *
      * @return A removal listener that handles token eviction events
      */
     public RemovalListener<String, CachedTokens> createRemovalListener() {
         return (key, value, cause) -> {
             if (value == null)
                 return;
 
-            LOGGER.info("Token cache eviction for cache key '{}' - Cause: {}", key, cause);
-            onTokenExpired(key, value, cause);
+            // Extract process instance ID from cache key and set context for logging
+            String processInstanceId = CacheUtils.extractProcessInstanceIdFromCacheKey(key);
+            if (processInstanceId != null && !processInstanceId.isEmpty()) {
+                ProcessInstanceContext.setProcessInstanceId(processInstanceId);
+            }
+
+            try {
+                LOGGER.info("Token cache eviction for cache key '{}' - Cause: {}", key, cause);
+                onTokenExpired(key, value, cause);
+            } finally {
+                // Reset to general context after logging
+                ProcessInstanceContext.clear();
+            }
         };
     }
 
     /**
      * Callback method called when tokens are evicted from the cache.
-     * 
+     * Context is already set by the removal listener, so no need to set it here.
+     *
      * @param cacheKey The cache key of the evicted tokens
      * @param tokens The evicted token data
      * @param cause The reason for eviction (Caffeine's RemovalCause)
      */
     private void onTokenExpired(String cacheKey, CachedTokens tokens, RemovalCause cause) {
         LOGGER.warn("OAuth2 tokens for cache key '{}' have expired/been evicted: {}", cacheKey, cause);
 
+        String processInstanceId = CacheUtils.extractProcessInstanceIdFromCacheKey(cacheKey);

Review Comment:
   Wasn't already set by the caller method?
   Maybe we don't need to set again.



##########
quarkus/addons/token-exchange/runtime/src/main/java/org/kie/kogito/addons/quarkus/token/exchange/cache/TokenEvictionHandler.java:
##########
@@ -54,29 +56,47 @@ public TokenEvictionHandler(TokenCRUD tokenCRUD) {
 
     /**
      * Creates a removal listener that can be used with Caffeine cache.
-     * 
+     * This listener sets the proper process instance context from the cache key before logging.
+     *
      * @return A removal listener that handles token eviction events
      */
     public RemovalListener<String, CachedTokens> createRemovalListener() {
         return (key, value, cause) -> {
             if (value == null)
                 return;
 
-            LOGGER.info("Token cache eviction for cache key '{}' - Cause: {}", key, cause);
-            onTokenExpired(key, value, cause);
+            // Extract process instance ID from cache key and set context for logging
+            String processInstanceId = CacheUtils.extractProcessInstanceIdFromCacheKey(key);
+            if (processInstanceId != null && !processInstanceId.isEmpty()) {
+                ProcessInstanceContext.setProcessInstanceId(processInstanceId);
+            }
+
+            try {
+                LOGGER.info("Token cache eviction for cache key '{}' - Cause: {}", key, cause);
+                onTokenExpired(key, value, cause);
+            } finally {
+                // Reset to general context after logging
+                ProcessInstanceContext.clear();

Review Comment:
   But we always clear. Not sure if it looks consistent with the
   ```
   
    if (processInstanceId != null && !processInstanceId.isEmpty()) {
                   ProcessInstanceContext.setProcessInstanceId(processInstanceId);
   ```
   
   Maybe we can always do ProcessInstanceContext.setProcessInstanceId(processInstanceId);, internally I  think the nul case is already managed.
   
   Does it make sense? Thinking aloud



##########
quarkus/addons/token-exchange/runtime/src/main/java/org/kie/kogito/addons/quarkus/token/exchange/cache/TokenPolicyManager.java:
##########
@@ -55,25 +56,37 @@ public long expireAfterRead(String key, CachedTokens value, long currentTime, lo
     }
 
     /**
-     * Calculate time to expiration based on token's actual expiration time minus proactive refresh buffer
+     * Calculate time to expiration based on token's actual expiration time minus proactive refresh buffer.
+     * This method sets the process instance context from the cache key for proper logging.
      */
     private static long calculateTimeToExpiration(String cacheKey, CachedTokens tokens) {
-        String authName = CacheUtils.extractAuthNameFromCacheKey(cacheKey);
-        long proactiveRefreshSeconds = Math.max(0, ConfigReaderUtils.getProactiveRefreshSeconds(authName));
+        // Extract process instance ID from cache key and set context for logging
+        String processInstanceId = CacheUtils.extractProcessInstanceIdFromCacheKey(cacheKey);
+        if (processInstanceId != null && !processInstanceId.isEmpty()) {
+            ProcessInstanceContext.setProcessInstanceId(processInstanceId);

Review Comment:
   same comment here, we just set by no asking.
   does it make sense?
   



##########
addons/common/monitoring/core/src/main/java/org/kie/kogito/monitoring/core/common/process/MetricsProcessEventListener.java:
##########
@@ -134,10 +141,37 @@ protected static double millisToSeconds(long millis) {
         return millis / 1000.0;
     }
 
+    /**
+     * Gets the current process instance ID from MDC for correlation.
+     *
+     * @return the process instance ID, or null if not available
+     */
+    private String getProcessInstanceIdFromContext() {
+        return MDC.get(MDC_PROCESS_INSTANCE_KEY);
+    }
+
+    /**
+     * Logs metric correlation information for debugging and observability.
+     *
+     * @param metricName the name of the metric being recorded
+     * @param processId the process ID
+     * @param processInstanceId the process instance ID (may be null)
+     */
+    private void logMetricCorrelation(String metricName, String processId, String processInstanceId) {
+        if (LOGGER.isDebugEnabled() && processInstanceId != null) {

Review Comment:
   What are these logs desined for? 



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "fjtirado (via GitHub)" <gi...@apache.org>.
fjtirado commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3718686376

   > @fjtirado @wmedvede I tried using `UnitOfWorkEventListener` to only have 1 span for each UnitOfWork but it is not giving good results; the span is only created and closed when receiving an end or abort event and I need to have a custom class extending `CollectingUnitOfWork` to have in memory the WorkUnit executed to get the processinstanceId. I think this will not work, or at least not as easily and nicely as what we currently have with 1 node == 1 span (so the long mode) Would that be OK for 1st version? Based on feedback this can be changed but it better have motivation behind it
   > 
   > See latest commit here https://github.com/gabriel-farache/kogito-runtimes/tree/feature/process-instance-aware-logging_long_short_modes
   
   Ok, lets do it by node, but checking state metadata to remove non significant nodes


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "kie-ci3 (via GitHub)" <gi...@apache.org>.
kie-ci3 commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3547835637

   
   **PR job** `#14` was: **UNSTABLE**
   Possible explanation: This should be test failures
   
   
   <details>
   <summary><b>Reproducer</b></summary>
   
   
   
   build-chain build full_downstream  -f 'https://raw.githubusercontent.com/${AUTHOR:apache}/incubator-kie-kogito-pipelines/${BRANCH:main}/.ci/buildchain-config-pr-cdb.yaml' -o 'bc' -p apache/incubator-kie-kogito-runtimes -u https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094 --skipParallelCheckout
   
   NOTE: To install the build-chain tool, please refer to https://github.com/kiegroup/github-action-build-chain#local-execution
   
   </details>
   
   
   Please look here: https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/14/display/redirect
   
   **Test results:**
   - PASSED: 3737
   - FAILED: 4
   
   Those are the test failures: 
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/14/testReport/org.kie.persistence.postgresql/PostgresqlProcessInstancesWithLockIT/___/">org.kie.persistence.postgresql.PostgresqlProcessInstancesWithLockIT.(?)</a></summary>
   Container startup failed for image mirror.gcr.io/postgres:15.9-alpine3.20
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/14/testReport/org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it/KnativeServingAddonIT/___/">org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it.KnativeServingAddonIT.(?)</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/14/testReport/org.kie.kogito.addons.quarkus.kubernetes/ConfigValueExpanderIT/test/">org.kie.kogito.addons.quarkus.kubernetes.ConfigValueExpanderIT.test</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/14/testReport/org.kie.kogito.quarkus.token.persistence.workflows/TokenExchangeIT/tokenExchange/">org.kie.kogito.quarkus.token.persistence.workflows.TokenExchangeIT.tokenExchange</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "kie-ci3 (via GitHub)" <gi...@apache.org>.
kie-ci3 commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3549920271

   
   **PR job** `#17` was: **UNSTABLE**
   Possible explanation: This should be test failures
   
   
   <details>
   <summary><b>Reproducer</b></summary>
   
   
   
   build-chain build full_downstream  -f 'https://raw.githubusercontent.com/${AUTHOR:apache}/incubator-kie-kogito-pipelines/${BRANCH:main}/.ci/buildchain-config-pr-cdb.yaml' -o 'bc' -p apache/incubator-kie-kogito-runtimes -u https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094 --skipParallelCheckout
   
   NOTE: To install the build-chain tool, please refer to https://github.com/kiegroup/github-action-build-chain#local-execution
   
   </details>
   
   
   Please look here: https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/17/display/redirect
   
   **Test results:**
   - PASSED: 3766
   - FAILED: 4
   
   Those are the test failures: 
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/17/testReport/org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it/KnativeServingAddonIT/___/">org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it.KnativeServingAddonIT.(?)</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/17/testReport/org.kie.kogito.addons.quarkus.kubernetes/ConfigValueExpanderIT/test/">org.kie.kogito.addons.quarkus.kubernetes.ConfigValueExpanderIT.test</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/17/testReport/org.kie.kogito.addon.quarkus.messaging.common/QuarkusEventThreadPoolTest/testQuarkusEventThreadPoolMultiThreadLongQueueTest/">org.kie.kogito.addon.quarkus.messaging.common.QuarkusEventThreadPoolTest.testQuarkusEventThreadPoolMultiThreadLongQueueTest</a></summary>
   expected: <10000> but was: <9999>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/17/testReport/org.kie.kogito.quarkus.token.persistence.workflows/TokenExchangeIT/tokenExchange/">org.kie.kogito.quarkus.token.persistence.workflows.TokenExchangeIT.tokenExchange</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gabriel-farache (via GitHub)" <gi...@apache.org>.
gabriel-farache commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3596934737

   @wmedvede FYI the doc PR https://github.com/apache/incubator-kie-kogito-docs/pull/741


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gabriel-farache (via GitHub)" <gi...@apache.org>.
gabriel-farache commented on code in PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#discussion_r2581716302


##########
quarkus/extensions/kogito-quarkus-serverless-workflow-otel-extension/kogito-quarkus-serverless-workflow-otel/src/main/java/org/kie/kogito/quarkus/serverless/workflow/otel/logging/OtelLogHandlerInitializer.java:
##########
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.kie.kogito.quarkus.serverless.workflow.otel.logging;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import io.quarkus.runtime.StartupEvent;
+
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.enterprise.event.Observes;
+
+@ApplicationScoped
+public class OtelLogHandlerInitializer {
+
+    private static final OtelLogHandler handler = new OtelLogHandler();
+
+    void onStart(@Observes StartupEvent ev) {

Review Comment:
   I added a check on the already added handler instance type to avoid duplicating same type of handler here



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "kie-ci3 (via GitHub)" <gi...@apache.org>.
kie-ci3 commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3608150750

   
   **PR job** `#30` was: **UNSTABLE**
   Possible explanation: This should be test failures
   
   
   <details>
   <summary><b>Reproducer</b></summary>
   
   
   
   build-chain build full_downstream  -f 'https://raw.githubusercontent.com/${AUTHOR:apache}/incubator-kie-kogito-pipelines/${BRANCH:main}/.ci/buildchain-config-pr-cdb.yaml' -o 'bc' -p apache/incubator-kie-kogito-runtimes -u https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094 --skipParallelCheckout
   
   NOTE: To install the build-chain tool, please refer to https://github.com/kiegroup/github-action-build-chain#local-execution
   
   </details>
   
   
   Please look here: https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/30/display/redirect
   
   **Test results:**
   - PASSED: 1519
   - FAILED: 1
   
   Those are the test failures: 
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/30/testReport/org.kie.kogito.addons.jwt.it/JwtParserIT/testJwtParserWorkflowEndToEnd/">org.kie.kogito.addons.jwt.it.JwtParserIT.testJwtParserWorkflowEndToEnd</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [NO-ISSUE] Implement process instance aware logging and context management [incubator-kie-kogito-runtimes]

Posted by "kie-ci3 (via GitHub)" <gi...@apache.org>.
kie-ci3 commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3399249820

   
   **PR job** `#1` was: **UNSTABLE**
   Possible explanation: This should be test failures
   
   
   <details>
   <summary><b>Reproducer</b></summary>
   
   
   
   build-chain build full_downstream  -f 'https://raw.githubusercontent.com/${AUTHOR:apache}/incubator-kie-kogito-pipelines/${BRANCH:main}/.ci/buildchain-config-pr-cdb.yaml' -o 'bc' -p apache/incubator-kie-kogito-runtimes -u https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094 --skipParallelCheckout
   
   NOTE: To install the build-chain tool, please refer to https://github.com/kiegroup/github-action-build-chain#local-execution
   
   </details>
   
   
   Please look here: https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/1/display/redirect
   
   **Test results:**
   - PASSED: 3660
   - FAILED: 14
   
   Those are the test failures: 
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/1/testReport/org.kie.kogito.services.context/ProcessInstanceContextTest/testAsyncOperationWithContextPropagation/">org.kie.kogito.services.context.ProcessInstanceContextTest.testAsyncOperationWithContextPropagation</a></summary>
   expected: <test-process-123> but was: <>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/1/testReport/org.kie.kogito.services.context/ProcessInstanceContextTest/testMdcIntegration/">org.kie.kogito.services.context.ProcessInstanceContextTest.testMdcIntegration</a></summary>
   expected: <test-process-123> but was: <null>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/1/testReport/org.kie.kogito.services.context/ProcessInstanceContextTest/testSetAndGetProcessInstanceId/">org.kie.kogito.services.context.ProcessInstanceContextTest.testSetAndGetProcessInstanceId</a></summary>
   expected: <test-process-123> but was: <null>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/1/testReport/org.kie.kogito.services.context/ProcessInstanceContextTest/testAsyncContextPropagation/">org.kie.kogito.services.context.ProcessInstanceContextTest.testAsyncContextPropagation</a></summary>
   expected: not <null>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/1/testReport/org.kie.kogito.services.context/ProcessInstanceContextTest/testSetNullProcessInstanceId/">org.kie.kogito.services.context.ProcessInstanceContextTest.testSetNullProcessInstanceId</a></summary>
   expected: <> but was: <null>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/1/testReport/org.kie.kogito.services.context/ProcessInstanceContextTest/testGeneralContextBehavior/">org.kie.kogito.services.context.ProcessInstanceContextTest.testGeneralContextBehavior</a></summary>
   expected: <true> but was: <false>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/1/testReport/org.kie.kogito.services.context/ProcessInstanceContextTest/testClearContext/">org.kie.kogito.services.context.ProcessInstanceContextTest.testClearContext</a></summary>
   expected: <> but was: <null>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/1/testReport/org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it/KnativeServingAddonIT/___/">org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it.KnativeServingAddonIT.(?)</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:351)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:322)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:336)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:556)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:346)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:909)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:492)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/1/testReport/org.kie.kogito.addons.quarkus.kubernetes/ConfigValueExpanderIT/test/">org.kie.kogito.addons.quarkus.kubernetes.ConfigValueExpanderIT.test</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:351)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:322)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:336)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:556)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:346)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:909)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:492)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/1/testReport/org.kie.kogito.quarkus.workflows/ProcessInstanceLoggingIT/testGeneralContextInNonProcessLogs/">org.kie.kogito.quarkus.workflows.ProcessInstanceLoggingIT.testGeneralContextInNonProcessLogs</a></summary>
   [Should have general context logs] <br/>Expecting actual:<br/>  0L<br/>to be greater than:<br/>  0L<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/1/testReport/org.kie.kogito.quarkus.workflows/TokenExchangeIT/testConcurrentTokenExchangeLoggingSegregation/">org.kie.kogito.quarkus.workflows.TokenExchangeIT.testConcurrentTokenExchangeLoggingSegregation</a></summary>
   [Should have general context logs from concurrent execution] <br/>Expecting actual not to be null
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/1/testReport/org.kie.kogito.quarkus.workflows/TokenExchangeIT/tokenExchange/">org.kie.kogito.quarkus.workflows.TokenExchangeIT.tokenExchange</a></summary>
   [Should have exactly 3 external service requests - one for each executeQueryWithExchange call] <br/>Expected size: 3 but was: 18 in:<br/>[{<br/>  "url" : "/token-exchange-external-service/withExchange",<br/>  "absoluteUrl" : "http://localhost:33907/token-exchange-external-service/withExchange",<br/>  "method" : "POST",<br/>  "clientIp" : "127.0.0.1",<br/>  "headers" : {<br/>    "Accept" : "application/json",<br/>    "Authorization" : "Bearer KEYCLOAK_EXCHANGED_ACCESS_TOKEN",<br/>    "Content-Type" : "application/json",<br/>    "kogitoprocid" : "token_exchange",<br/>    "kogitoprocinstanceid" : "ce5f910d-8b04-4e92-aa42-cd701aa0104a",<br/>    "kogitoprocist" : "Active",<br/>    "kogitoproctype" : "SW",<br/>    "kogitoprocversion" : "1.0",<br/>    "Content-Length" : "87",<br/>    "Host" : "localhost:33907",<br/>    "Connection" : "keep-alive",<br/>    "User-Agent" : "Apache-HttpClient/4.5.14 (Java/17.0.11)"<br/>  },<br/>  "cookies" : { },<br/>  "browserProxyRequest" : false,<br/>  "l
 oggedDate" : 1760383484891,<br/>  "bodyAsBase64" : "eyJwcm9jZXNzSW5zdGFuY2VJZCI6ImNlNWY5MTBkLThiMDQtNGU5Mi1hYTQyLWNkNzAxYWEwMTA0YSIsInF1ZXJ5IjoiU1VDQ0VTU0ZVTF9RVUVSWSJ9",<br/>  "body" : "{\"processInstanceId\":\"ce5f910d-8b04-4e92-aa42-cd701aa0104a\",\"query\":\"SUCCESSFUL_QUERY\"}",<br/>  "protocol" : "HTTP/1.1",<br/>  "scheme" : "http",<br/>  "host" : "localhost",<br/>  "port" : 33907,<br/>  "loggedDateString" : "2025-10-13T19:24:44.891Z",<br/>  "queryParams" : { },<br/>  "formParams" : { }<br/>},<br/>    {<br/>  "url" : "/token-exchange-external-service/withExchange",<br/>  "absoluteUrl" : "http://localhost:33907/token-exchange-external-service/withExchange",<br/>  "method" : "POST",<br/>  "clientIp" : "127.0.0.1",<br/>  "headers" : {<br/>    "Accept" : "application/json",<br/>    "Authorization" : "Bearer KEYCLOAK_EXCHANGED_ACCESS_TOKEN",<br/>    "Content-Type" : "application/json",<br/>    "kogitoprocid" : "token_exchange",<br/>    "kogitoprocinstanceid" : "e4d620f1-d5a6-4fc8-a
 8a8-24dc972eb33f",<br/>    "kogitoprocist" : "Active",<br/>    "kogitoproctype" : "SW",<br/>    "kogitoprocversion" : "1.0",<br/>    "Content-Length" : "87",<br/>    "Host" : "localhost:33907",<br/>    "Connection" : "keep-alive",<br/>    "User-Agent" : "Apache-HttpClient/4.5.14 (Java/17.0.11)"<br/>  },<br/>  "cookies" : { },<br/>  "browserProxyRequest" : false,<br/>  "loggedDate" : 1760383484892,<br/>  "bodyAsBase64" : "eyJwcm9jZXNzSW5zdGFuY2VJZCI6ImU0ZDYyMGYxLWQ1YTYtNGZjOC1hOGE4LTI0ZGM5NzJlYjMzZiIsInF1ZXJ5IjoiU1VDQ0VTU0ZVTF9RVUVSWSJ9",<br/>  "body" : "{\"processInstanceId\":\"e4d620f1-d5a6-4fc8-a8a8-24dc972eb33f\",\"query\":\"SUCCESSFUL_QUERY\"}",<br/>  "protocol" : "HTTP/1.1",<br/>  "scheme" : "http",<br/>  "host" : "localhost",<br/>  "port" : 33907,<br/>  "loggedDateString" : "2025-10-13T19:24:44.892Z",<br/>  "queryParams" : { },<br/>  "formParams" : { }<br/>},<br/>    {<br/>  "url" : "/token-exchange-external-service/withExchange",<br/>  "absoluteUrl" : "http://localhost:33907/
 token-exchange-external-service/withExchange",<br/>  "method" : "POST",<br/>  "clientIp" : "127.0.0.1",<br/>  "headers" : {<br/>    "Accept" : "application/json",<br/>    "Authorization" : "Bearer KEYCLOAK_EXCHANGED_ACCESS_TOKEN",<br/>    "Content-Type" : "application/json",<br/>    "kogitoprocid" : "token_exchange",<br/>    "kogitoprocinstanceid" : "a3db8ff9-06cc-459e-8e91-f964b1281635",<br/>    "kogitoprocist" : "Active",<br/>    "kogitoproctype" : "SW",<br/>    "kogitoprocversion" : "1.0",<br/>    "Content-Length" : "87",<br/>    "Host" : "localhost:33907",<br/>    "Connection" : "keep-alive",<br/>    "User-Agent" : "Apache-HttpClient/4.5.14 (Java/17.0.11)"<br/>  },<br/>  "cookies" : { },<br/>  "browserProxyRequest" : false,<br/>  "loggedDate" : 1760383484897,<br/>  "bodyAsBase64" : "eyJwcm9jZXNzSW5zdGFuY2VJZCI6ImEzZGI4ZmY5LTA2Y2MtNDU5ZS04ZTkxLWY5NjRiMTI4MTYzNSIsInF1ZXJ5IjoiU1VDQ0VTU0ZVTF9RVUVSWSJ9",<br/>  "body" : "{\"processInstanceId\":\"a3db8ff9-06cc-459e-8e91-f964b1281635\",
 \"query\":\"SUCCESSFUL_QUERY\"}",<br/>  "protocol" : "HTTP/1.1",<br/>  "scheme" : "http",<br/>  "host" : "localhost",<br/>  "port" : 33907,<br/>  "loggedDateString" : "2025-10-13T19:24:44.897Z",<br/>  "queryParams" : { },<br/>  "formParams" : { }<br/>},<br/>    {<br/>  "url" : "/token-exchange-external-service/withExchange",<br/>  "absoluteUrl" : "http://localhost:33907/token-exchange-external-service/withExchange",<br/>  "method" : "POST",<br/>  "clientIp" : "127.0.0.1",<br/>  "headers" : {<br/>    "Accept" : "application/json",<br/>    "Authorization" : "Bearer KEYCLOAK_EXCHANGED_ACCESS_TOKEN",<br/>    "Content-Type" : "application/json",<br/>    "kogitoprocid" : "token_exchange",<br/>    "kogitoprocinstanceid" : "31858382-41c9-42d9-944b-ed4b6fc1cc86",<br/>    "kogitoprocist" : "Active",<br/>    "kogitoproctype" : "SW",<br/>    "kogitoprocversion" : "1.0",<br/>    "Content-Length" : "87",<br/>    "Host" : "localhost:33907",<br/>    "Connection" : "keep-alive",<br/>    "User-Agent"
  : "Apache-HttpClient/4.5.14 (Java/17.0.11)"<br/>  },<br/>  "cookies" : { },<br/>  "browserProxyRequest" : false,<br/>  "loggedDate" : 1760383484898,<br/>  "bodyAsBase64" : "eyJwcm9jZXNzSW5zdGFuY2VJZCI6IjMxODU4MzgyLTQxYzktNDJkOS05NDRiLWVkNGI2ZmMxY2M4NiIsInF1ZXJ5IjoiU1VDQ0VTU0ZVTF9RVUVSWSJ9",<br/>  "body" : "{\"processInstanceId\":\"31858382-41c9-42d9-944b-ed4b6fc1cc86\",\"query\":\"SUCCESSFUL_QUERY\"}",<br/>  "protocol" : "HTTP/1.1",<br/>  "scheme" : "http",<br/>  "host" : "localhost",<br/>  "port" : 33907,<br/>  "loggedDateString" : "2025-10-13T19:24:44.898Z",<br/>  "queryParams" : { },<br/>  "formParams" : { }<br/>},<br/>    {<br/>  "url" : "/token-exchange-external-service/withExchange",<br/>  "absoluteUrl" : "http://localhost:33907/token-exchange-external-service/withExchange",<br/>  "method" : "POST",<br/>  "clientIp" : "127.0.0.1",<br/>  "headers" : {<br/>    "Accept" : "application/json",<br/>    "Authorization" : "Bearer KEYCLOAK_EXCHANGED_ACCESS_TOKEN",<br/>    "Content-Typ
 e" : "application/json",<br/>    "kogitoprocid" : "token_exchange",<br/>    "kogitoprocinstanceid" : "a9dcced3-08b4-4ad5-bacd-34e00420f093",<br/>    "kogitoprocist" : "Active",<br/>    "kogitoproctype" : "SW",<br/>    "kogitoprocversion" : "1.0",<br/>    "Content-Length" : "87",<br/>    "Host" : "localhost:33907",<br/>    "Connection" : "keep-alive",<br/>    "User-Agent" : "Apache-HttpClient/4.5.14 (Java/17.0.11)"<br/>  },<br/>  "cookies" : { },<br/>  "browserProxyRequest" : false,<br/>  "loggedDate" : 1760383484917,<br/>  "bodyAsBase64" : "eyJwcm9jZXNzSW5zdGFuY2VJZCI6ImE5ZGNjZWQzLTA4YjQtNGFkNS1iYWNkLTM0ZTAwNDIwZjA5MyIsInF1ZXJ5IjoiU1VDQ0VTU0ZVTF9RVUVSWSJ9",<br/>  "body" : "{\"processInstanceId\":\"a9dcced3-08b4-4ad5-bacd-34e00420f093\",\"query\":\"SUCCESSFUL_QUERY\"}",<br/>  "protocol" : "HTTP/1.1",<br/>  "scheme" : "http",<br/>  "host" : "localhost",<br/>  "port" : 33907,<br/>  "loggedDateString" : "2025-10-13T19:24:44.917Z",<br/>  "queryParams" : { },<br/>  "formParams" : { }<br/>
 },<br/>    {<br/>  "url" : "/token-exchange-external-service/withExchange",<br/>  "absoluteUrl" : "http://localhost:33907/token-exchange-external-service/withExchange",<br/>  "method" : "POST",<br/>  "clientIp" : "127.0.0.1",<br/>  "headers" : {<br/>    "Accept" : "application/json",<br/>    "Authorization" : "Bearer KEYCLOAK_EXCHANGED_ACCESS_TOKEN",<br/>    "Content-Type" : "application/json",<br/>    "kogitoprocid" : "token_exchange",<br/>    "kogitoprocinstanceid" : "a3db8ff9-06cc-459e-8e91-f964b1281635",<br/>    "kogitoprocist" : "Active",<br/>    "kogitoproctype" : "SW",<br/>    "kogitoprocversion" : "1.0",<br/>    "Content-Length" : "87",<br/>    "Host" : "localhost:33907",<br/>    "Connection" : "keep-alive",<br/>    "User-Agent" : "Apache-HttpClient/4.5.14 (Java/17.0.11)"<br/>  },<br/>  "cookies" : { },<br/>  "browserProxyRequest" : false,<br/>  "loggedDate" : 1760383486075,<br/>  "bodyAsBase64" : "eyJwcm9jZXNzSW5zdGFuY2VJZCI6ImEzZGI4ZmY5LTA2Y2MtNDU5ZS04ZTkxLWY5NjRiMTI4MTYzN
 SIsInF1ZXJ5IjoiU1VDQ0VTU0ZVTF9RVUVSWSJ9",<br/>  "body" : "{\"processInstanceId\":\"a3db8ff9-06cc-459e-8e91-f964b1281635\",\"query\":\"SUCCESSFUL_QUERY\"}",<br/>  "protocol" : "HTTP/1.1",<br/>  "scheme" : "http",<br/>  "host" : "localhost",<br/>  "port" : 33907,<br/>  "loggedDateString" : "2025-10-13T19:24:46.075Z",<br/>  "queryParams" : { },<br/>  "formParams" : { }<br/>},<br/>    {<br/>  "url" : "/token-exchange-external-service/withExchange",<br/>  "absoluteUrl" : "http://localhost:33907/token-exchange-external-service/withExchange",<br/>  "method" : "POST",<br/>  "clientIp" : "127.0.0.1",<br/>  "headers" : {<br/>    "Accept" : "application/json",<br/>    "Authorization" : "Bearer KEYCLOAK_EXCHANGED_ACCESS_TOKEN",<br/>    "Content-Type" : "application/json",<br/>    "kogitoprocid" : "token_exchange",<br/>    "kogitoprocinstanceid" : "31858382-41c9-42d9-944b-ed4b6fc1cc86",<br/>    "kogitoprocist" : "Active",<br/>    "kogitoproctype" : "SW",<br/>    "kogitoprocversion" : "1.0",<br/>
     "Content-Length" : "87",<br/>    "Host" : "localhost:33907",<br/>    "Connection" : "keep-alive",<br/>    "User-Agent" : "Apache-HttpClient/4.5.14 (Java/17.0.11)"<br/>  },<br/>  "cookies" : { },<br/>  "browserProxyRequest" : false,<br/>  "loggedDate" : 1760383486093,<br/>  "bodyAsBase64" : "eyJwcm9jZXNzSW5zdGFuY2VJZCI6IjMxODU4MzgyLTQxYzktNDJkOS05NDRiLWVkNGI2ZmMxY2M4NiIsInF1ZXJ5IjoiU1VDQ0VTU0ZVTF9RVUVSWSJ9",<br/>  "body" : "{\"processInstanceId\":\"31858382-41c9-42d9-944b-ed4b6fc1cc86\",\"query\":\"SUCCESSFUL_QUERY\"}",<br/>  "protocol" : "HTTP/1.1",<br/>  "scheme" : "http",<br/>  "host" : "localhost",<br/>  "port" : 33907,<br/>  "loggedDateString" : "2025-10-13T19:24:46.093Z",<br/>  "queryParams" : { },<br/>  "formParams" : { }<br/>},<br/>    {<br/>  "url" : "/token-exchange-external-service/withExchange",<br/>  "absoluteUrl" : "http://localhost:33907/token-exchange-external-service/withExchange",<br/>  "method" : "POST",<br/>  "clientIp" : "127.0.0.1",<br/>  "headers" : {<br/> 
    "Accept" : "application/json",<br/>    "Authorization" : "Bearer KEYCLOAK_EXCHANGED_ACCESS_TOKEN",<br/>    "Content-Type" : "application/json",<br/>    "kogitoprocid" : "token_exchange",<br/>    "kogitoprocinstanceid" : "e4d620f1-d5a6-4fc8-a8a8-24dc972eb33f",<br/>    "kogitoprocist" : "Active",<br/>    "kogitoproctype" : "SW",<br/>    "kogitoprocversion" : "1.0",<br/>    "Content-Length" : "87",<br/>    "Host" : "localhost:33907",<br/>    "Connection" : "keep-alive",<br/>    "User-Agent" : "Apache-HttpClient/4.5.14 (Java/17.0.11)"<br/>  },<br/>  "cookies" : { },<br/>  "browserProxyRequest" : false,<br/>  "loggedDate" : 1760383486097,<br/>  "bodyAsBase64" : "eyJwcm9jZXNzSW5zdGFuY2VJZCI6ImU0ZDYyMGYxLWQ1YTYtNGZjOC1hOGE4LTI0ZGM5NzJlYjMzZiIsInF1ZXJ5IjoiU1VDQ0VTU0ZVTF9RVUVSWSJ9",<br/>  "body" : "{\"processInstanceId\":\"e4d620f1-d5a6-4fc8-a8a8-24dc972eb33f\",\"query\":\"SUCCESSFUL_QUERY\"}",<br/>  "protocol" : "HTTP/1.1",<br/>  "scheme" : "http",<br/>  "host" : "localhost",<br/>  "port
 " : 33907,<br/>  "loggedDateString" : "2025-10-13T19:24:46.097Z",<br/>  "queryParams" : { },<br/>  "formParams" : { }<br/>},<br/>    {<br/>  "url" : "/token-exchange-external-service/withExchange",<br/>  "absoluteUrl" : "http://localhost:33907/token-exchange-external-service/withExchange",<br/>  "method" : "POST",<br/>  "clientIp" : "127.0.0.1",<br/>  "headers" : {<br/>    "Accept" : "application/json",<br/>    "Authorization" : "Bearer KEYCLOAK_EXCHANGED_ACCESS_TOKEN",<br/>    "Content-Type" : "application/json",<br/>    "kogitoprocid" : "token_exchange",<br/>    "kogitoprocinstanceid" : "a9dcced3-08b4-4ad5-bacd-34e00420f093",<br/>    "kogitoprocist" : "Active",<br/>    "kogitoproctype" : "SW",<br/>    "kogitoprocversion" : "1.0",<br/>    "Content-Length" : "87",<br/>    "Host" : "localhost:33907",<br/>    "Connection" : "keep-alive",<br/>    "User-Agent" : "Apache-HttpClient/4.5.14 (Java/17.0.11)"<br/>  },<br/>  "cookies" : { },<br/>  "browserProxyRequest" : false,<br/>  "loggedDa
 te" : 1760383486132,<br/>  "bodyAsBase64" : "eyJwcm9jZXNzSW5zdGFuY2VJZCI6ImE5ZGNjZWQzLTA4YjQtNGFkNS1iYWNkLTM0ZTAwNDIwZjA5MyIsInF1ZXJ5IjoiU1VDQ0VTU0ZVTF9RVUVSWSJ9",<br/>  "body" : "{\"processInstanceId\":\"a9dcced3-08b4-4ad5-bacd-34e00420f093\",\"query\":\"SUCCESSFUL_QUERY\"}",<br/>  "protocol" : "HTTP/1.1",<br/>  "scheme" : "http",<br/>  "host" : "localhost",<br/>  "port" : 33907,<br/>  "loggedDateString" : "2025-10-13T19:24:46.132Z",<br/>  "queryParams" : { },<br/>  "formParams" : { }<br/>},<br/>    {<br/>  "url" : "/token-exchange-external-service/withExchange",<br/>  "absoluteUrl" : "http://localhost:33907/token-exchange-external-service/withExchange",<br/>  "method" : "POST",<br/>  "clientIp" : "127.0.0.1",<br/>  "headers" : {<br/>    "Accept" : "application/json",<br/>    "Authorization" : "Bearer KEYCLOAK_EXCHANGED_ACCESS_TOKEN",<br/>    "Content-Type" : "application/json",<br/>    "kogitoprocid" : "token_exchange",<br/>    "kogitoprocinstanceid" : "ce5f910d-8b04-4e92-aa42-cd7
 01aa0104a",<br/>    "kogitoprocist" : "Active",<br/>    "kogitoproctype" : "SW",<br/>    "kogitoprocversion" : "1.0",<br/>    "Content-Length" : "87",<br/>    "Host" : "localhost:33907",<br/>    "Connection" : "keep-alive",<br/>    "User-Agent" : "Apache-HttpClient/4.5.14 (Java/17.0.11)"<br/>  },<br/>  "cookies" : { },<br/>  "browserProxyRequest" : false,<br/>  "loggedDate" : 1760383486132,<br/>  "bodyAsBase64" : "eyJwcm9jZXNzSW5zdGFuY2VJZCI6ImNlNWY5MTBkLThiMDQtNGU5Mi1hYTQyLWNkNzAxYWEwMTA0YSIsInF1ZXJ5IjoiU1VDQ0VTU0ZVTF9RVUVSWSJ9",<br/>  "body" : "{\"processInstanceId\":\"ce5f910d-8b04-4e92-aa42-cd701aa0104a\",\"query\":\"SUCCESSFUL_QUERY\"}",<br/>  "protocol" : "HTTP/1.1",<br/>  "scheme" : "http",<br/>  "host" : "localhost",<br/>  "port" : 33907,<br/>  "loggedDateString" : "2025-10-13T19:24:46.132Z",<br/>  "queryParams" : { },<br/>  "formParams" : { }<br/>},<br/>    {<br/>  "url" : "/token-exchange-external-service/withExchange",<br/>  "absoluteUrl" : "http://localhost:33907/token-e
 xchange-external-service/withExchange",<br/>  "method" : "POST",<br/>  "clientIp" : "127.0.0.1",<br/>  "headers" : {<br/>    "Accept" : "application/json",<br/>    "Authorization" : "Bearer KEYCLOAK_EXCHANGED_ACCESS_TOKEN",<br/>    "Content-Type" : "application/json",<br/>    "kogitoprocid" : "token_exchange",<br/>    "kogitoprocinstanceid" : "e4d620f1-d5a6-4fc8-a8a8-24dc972eb33f",<br/>    "kogitoprocist" : "Active",<br/>    "kogitoproctype" : "SW",<br/>    "kogitoprocversion" : "1.0",<br/>    "Content-Length" : "87",<br/>    "Host" : "localhost:33907",<br/>    "Connection" : "keep-alive",<br/>    "User-Agent" : "Apache-HttpClient/4.5.14 (Java/17.0.11)"<br/>  },<br/>  "cookies" : { },<br/>  "browserProxyRequest" : false,<br/>  "loggedDate" : 1760383496260,<br/>  "bodyAsBase64" : "eyJwcm9jZXNzSW5zdGFuY2VJZCI6ImU0ZDYyMGYxLWQ1YTYtNGZjOC1hOGE4LTI0ZGM5NzJlYjMzZiIsInF1ZXJ5IjoiU1VDQ0VTU0ZVTF9RVUVSWSJ9",<br/>  "body" : "{\"processInstanceId\":\"e4d620f1-d5a6-4fc8-a8a8-24dc972eb33f\",\"query
 \":\"SUCCESSFUL_QUERY\"}",<br/>  "protocol" : "HTTP/1.1",<br/>  "scheme" : "http",<br/>  "host" : "localhost",<br/>  "port" : 33907,<br/>  "loggedDateString" : "2025-10-13T19:24:56.26Z",<br/>  "queryParams" : { },<br/>  "formParams" : { }<br/>},<br/>    {<br/>  "url" : "/token-exchange-external-service/withExchange",<br/>  "absoluteUrl" : "http://localhost:33907/token-exchange-external-service/withExchange",<br/>  "method" : "POST",<br/>  "clientIp" : "127.0.0.1",<br/>  "headers" : {<br/>    "Accept" : "application/json",<br/>    "Authorization" : "Bearer KEYCLOAK_EXCHANGED_ACCESS_TOKEN",<br/>    "Content-Type" : "application/json",<br/>    "kogitoprocid" : "token_exchange",<br/>    "kogitoprocinstanceid" : "a3db8ff9-06cc-459e-8e91-f964b1281635",<br/>    "kogitoprocist" : "Active",<br/>    "kogitoproctype" : "SW",<br/>    "kogitoprocversion" : "1.0",<br/>    "Content-Length" : "87",<br/>    "Host" : "localhost:33907",<br/>    "Connection" : "keep-alive",<br/>    "User-Agent" : "Apac
 he-HttpClient/4.5.14 (Java/17.0.11)"<br/>  },<br/>  "cookies" : { },<br/>  "browserProxyRequest" : false,<br/>  "loggedDate" : 1760383496266,<br/>  "bodyAsBase64" : "eyJwcm9jZXNzSW5zdGFuY2VJZCI6ImEzZGI4ZmY5LTA2Y2MtNDU5ZS04ZTkxLWY5NjRiMTI4MTYzNSIsInF1ZXJ5IjoiU1VDQ0VTU0ZVTF9RVUVSWSJ9",<br/>  "body" : "{\"processInstanceId\":\"a3db8ff9-06cc-459e-8e91-f964b1281635\",\"query\":\"SUCCESSFUL_QUERY\"}",<br/>  "protocol" : "HTTP/1.1",<br/>  "scheme" : "http",<br/>  "host" : "localhost",<br/>  "port" : 33907,<br/>  "loggedDateString" : "2025-10-13T19:24:56.266Z",<br/>  "queryParams" : { },<br/>  "formParams" : { }<br/>},<br/>    {<br/>  "url" : "/token-exchange-external-service/withExchange",<br/>  "absoluteUrl" : "http://localhost:33907/token-exchange-external-service/withExchange",<br/>  "method" : "POST",<br/>  "clientIp" : "127.0.0.1",<br/>  "headers" : {<br/>    "Accept" : "application/json",<br/>    "Authorization" : "Bearer KEYCLOAK_EXCHANGED_ACCESS_TOKEN",<br/>    "Content-Type" : "ap
 plication/json",<br/>    "kogitoprocid" : "token_exchange",<br/>    "kogitoprocinstanceid" : "ce5f910d-8b04-4e92-aa42-cd701aa0104a",<br/>    "kogitoprocist" : "Active",<br/>    "kogitoproctype" : "SW",<br/>    "kogitoprocversion" : "1.0",<br/>    "Content-Length" : "87",<br/>    "Host" : "localhost:33907",<br/>    "Connection" : "keep-alive",<br/>    "User-Agent" : "Apache-HttpClient/4.5.14 (Java/17.0.11)"<br/>  },<br/>  "cookies" : { },<br/>  "browserProxyRequest" : false,<br/>  "loggedDate" : 1760383496271,<br/>  "bodyAsBase64" : "eyJwcm9jZXNzSW5zdGFuY2VJZCI6ImNlNWY5MTBkLThiMDQtNGU5Mi1hYTQyLWNkNzAxYWEwMTA0YSIsInF1ZXJ5IjoiU1VDQ0VTU0ZVTF9RVUVSWSJ9",<br/>  "body" : "{\"processInstanceId\":\"ce5f910d-8b04-4e92-aa42-cd701aa0104a\",\"query\":\"SUCCESSFUL_QUERY\"}",<br/>  "protocol" : "HTTP/1.1",<br/>  "scheme" : "http",<br/>  "host" : "localhost",<br/>  "port" : 33907,<br/>  "loggedDateString" : "2025-10-13T19:24:56.271Z",<br/>  "queryParams" : { },<br/>  "formParams" : { }<br/>},<br/> 
    {<br/>  "url" : "/token-exchange-external-service/withExchange",<br/>  "absoluteUrl" : "http://localhost:33907/token-exchange-external-service/withExchange",<br/>  "method" : "POST",<br/>  "clientIp" : "127.0.0.1",<br/>  "headers" : {<br/>    "Accept" : "application/json",<br/>    "Authorization" : "Bearer KEYCLOAK_EXCHANGED_ACCESS_TOKEN",<br/>    "Content-Type" : "application/json",<br/>    "kogitoprocid" : "token_exchange",<br/>    "kogitoprocinstanceid" : "a9dcced3-08b4-4ad5-bacd-34e00420f093",<br/>    "kogitoprocist" : "Active",<br/>    "kogitoproctype" : "SW",<br/>    "kogitoprocversion" : "1.0",<br/>    "Content-Length" : "87",<br/>    "Host" : "localhost:33907",<br/>    "Connection" : "keep-alive",<br/>    "User-Agent" : "Apache-HttpClient/4.5.14 (Java/17.0.11)"<br/>  },<br/>  "cookies" : { },<br/>  "browserProxyRequest" : false,<br/>  "loggedDate" : 1760383496277,<br/>  "bodyAsBase64" : "eyJwcm9jZXNzSW5zdGFuY2VJZCI6ImE5ZGNjZWQzLTA4YjQtNGFkNS1iYWNkLTM0ZTAwNDIwZjA5MyIsInF1Z
 XJ5IjoiU1VDQ0VTU0ZVTF9RVUVSWSJ9",<br/>  "body" : "{\"processInstanceId\":\"a9dcced3-08b4-4ad5-bacd-34e00420f093\",\"query\":\"SUCCESSFUL_QUERY\"}",<br/>  "protocol" : "HTTP/1.1",<br/>  "scheme" : "http",<br/>  "host" : "localhost",<br/>  "port" : 33907,<br/>  "loggedDateString" : "2025-10-13T19:24:56.277Z",<br/>  "queryParams" : { },<br/>  "formParams" : { }<br/>},<br/>    {<br/>  "url" : "/token-exchange-external-service/withExchange",<br/>  "absoluteUrl" : "http://localhost:33907/token-exchange-external-service/withExchange",<br/>  "method" : "POST",<br/>  "clientIp" : "127.0.0.1",<br/>  "headers" : {<br/>    "Accept" : "application/json",<br/>    "Authorization" : "Bearer KEYCLOAK_EXCHANGED_ACCESS_TOKEN",<br/>    "Content-Type" : "application/json",<br/>    "kogitoprocid" : "token_exchange",<br/>    "kogitoprocinstanceid" : "31858382-41c9-42d9-944b-ed4b6fc1cc86",<br/>    "kogitoprocist" : "Active",<br/>    "kogitoproctype" : "SW",<br/>    "kogitoprocversion" : "1.0",<br/>    "Con
 tent-Length" : "87",<br/>    "Host" : "localhost:33907",<br/>    "Connection" : "keep-alive",<br/>    "User-Agent" : "Apache-HttpClient/4.5.14 (Java/17.0.11)"<br/>  },<br/>  "cookies" : { },<br/>  "browserProxyRequest" : false,<br/>  "loggedDate" : 1760383496280,<br/>  "bodyAsBase64" : "eyJwcm9jZXNzSW5zdGFuY2VJZCI6IjMxODU4MzgyLTQxYzktNDJkOS05NDRiLWVkNGI2ZmMxY2M4NiIsInF1ZXJ5IjoiU1VDQ0VTU0ZVTF9RVUVSWSJ9",<br/>  "body" : "{\"processInstanceId\":\"31858382-41c9-42d9-944b-ed4b6fc1cc86\",\"query\":\"SUCCESSFUL_QUERY\"}",<br/>  "protocol" : "HTTP/1.1",<br/>  "scheme" : "http",<br/>  "host" : "localhost",<br/>  "port" : 33907,<br/>  "loggedDateString" : "2025-10-13T19:24:56.28Z",<br/>  "queryParams" : { },<br/>  "formParams" : { }<br/>},<br/>    {<br/>  "url" : "/token-exchange-external-service/withExchange",<br/>  "absoluteUrl" : "http://localhost:33907/token-exchange-external-service/withExchange",<br/>  "method" : "POST",<br/>  "clientIp" : "127.0.0.1",<br/>  "headers" : {<br/>    "Accep
 t" : "application/json",<br/>    "Authorization" : "Bearer KEYCLOAK_EXCHANGED_ACCESS_TOKEN",<br/>    "Content-Type" : "application/json",<br/>    "kogitoprocid" : "token_exchange",<br/>    "kogitoprocinstanceid" : "803a24be-84be-4c97-a4d9-b7f172fba6db",<br/>    "kogitoprocist" : "Active",<br/>    "kogitoproctype" : "SW",<br/>    "kogitoprocversion" : "1.0",<br/>    "Content-Length" : "87",<br/>    "Host" : "localhost:33907",<br/>    "Connection" : "keep-alive",<br/>    "User-Agent" : "Apache-HttpClient/4.5.14 (Java/17.0.11)"<br/>  },<br/>  "cookies" : { },<br/>  "browserProxyRequest" : false,<br/>  "loggedDate" : 1760383497457,<br/>  "bodyAsBase64" : "eyJwcm9jZXNzSW5zdGFuY2VJZCI6IjgwM2EyNGJlLTg0YmUtNGM5Ny1hNGQ5LWI3ZjE3MmZiYTZkYiIsInF1ZXJ5IjoiU1VDQ0VTU0ZVTF9RVUVSWSJ9",<br/>  "body" : "{\"processInstanceId\":\"803a24be-84be-4c97-a4d9-b7f172fba6db\",\"query\":\"SUCCESSFUL_QUERY\"}",<br/>  "protocol" : "HTTP/1.1",<br/>  "scheme" : "http",<br/>  "host" : "localhost",<br/>  "port" : 33907
 ,<br/>  "loggedDateString" : "2025-10-13T19:24:57.457Z",<br/>  "queryParams" : { },<br/>  "formParams" : { }<br/>},<br/>    {<br/>  "url" : "/token-exchange-external-service/withExchange",<br/>  "absoluteUrl" : "http://localhost:33907/token-exchange-external-service/withExchange",<br/>  "method" : "POST",<br/>  "clientIp" : "127.0.0.1",<br/>  "headers" : {<br/>    "Accept" : "application/json",<br/>    "Authorization" : "Bearer KEYCLOAK_EXCHANGED_ACCESS_TOKEN",<br/>    "Content-Type" : "application/json",<br/>    "kogitoprocid" : "token_exchange",<br/>    "kogitoprocinstanceid" : "803a24be-84be-4c97-a4d9-b7f172fba6db",<br/>    "kogitoprocist" : "Active",<br/>    "kogitoproctype" : "SW",<br/>    "kogitoprocversion" : "1.0",<br/>    "Content-Length" : "87",<br/>    "Host" : "localhost:33907",<br/>    "Connection" : "keep-alive",<br/>    "User-Agent" : "Apache-HttpClient/4.5.14 (Java/17.0.11)"<br/>  },<br/>  "cookies" : { },<br/>  "browserProxyRequest" : false,<br/>  "loggedDate" : 176
 0383498556,<br/>  "bodyAsBase64" : "eyJwcm9jZXNzSW5zdGFuY2VJZCI6IjgwM2EyNGJlLTg0YmUtNGM5Ny1hNGQ5LWI3ZjE3MmZiYTZkYiIsInF1ZXJ5IjoiU1VDQ0VTU0ZVTF9RVUVSWSJ9",<br/>  "body" : "{\"processInstanceId\":\"803a24be-84be-4c97-a4d9-b7f172fba6db\",\"query\":\"SUCCESSFUL_QUERY\"}",<br/>  "protocol" : "HTTP/1.1",<br/>  "scheme" : "http",<br/>  "host" : "localhost",<br/>  "port" : 33907,<br/>  "loggedDateString" : "2025-10-13T19:24:58.556Z",<br/>  "queryParams" : { },<br/>  "formParams" : { }<br/>},<br/>    {<br/>  "url" : "/token-exchange-external-service/withExchange",<br/>  "absoluteUrl" : "http://localhost:33907/token-exchange-external-service/withExchange",<br/>  "method" : "POST",<br/>  "clientIp" : "127.0.0.1",<br/>  "headers" : {<br/>    "Accept" : "application/json",<br/>    "Authorization" : "Bearer KEYCLOAK_EXCHANGED_ACCESS_TOKEN",<br/>    "Content-Type" : "application/json",<br/>    "kogitoprocid" : "token_exchange",<br/>    "kogitoprocinstanceid" : "803a24be-84be-4c97-a4d9-b7f172fba6db
 ",<br/>    "kogitoprocist" : "Active",<br/>    "kogitoproctype" : "SW",<br/>    "kogitoprocversion" : "1.0",<br/>    "Content-Length" : "87",<br/>    "Host" : "localhost:33907",<br/>    "Connection" : "keep-alive",<br/>    "User-Agent" : "Apache-HttpClient/4.5.14 (Java/17.0.11)"<br/>  },<br/>  "cookies" : { },<br/>  "browserProxyRequest" : false,<br/>  "loggedDate" : 1760383508653,<br/>  "bodyAsBase64" : "eyJwcm9jZXNzSW5zdGFuY2VJZCI6IjgwM2EyNGJlLTg0YmUtNGM5Ny1hNGQ5LWI3ZjE3MmZiYTZkYiIsInF1ZXJ5IjoiU1VDQ0VTU0ZVTF9RVUVSWSJ9",<br/>  "body" : "{\"processInstanceId\":\"803a24be-84be-4c97-a4d9-b7f172fba6db\",\"query\":\"SUCCESSFUL_QUERY\"}",<br/>  "protocol" : "HTTP/1.1",<br/>  "scheme" : "http",<br/>  "host" : "localhost",<br/>  "port" : 33907,<br/>  "loggedDateString" : "2025-10-13T19:25:08.653Z",<br/>  "queryParams" : { },<br/>  "formParams" : { }<br/>}]
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/1/testReport/org.kie.kogito.quarkus.token.persistence.workflows/TokenExchangeIT/testConcurrentTokenExchangeLoggingSegregation/">org.kie.kogito.quarkus.token.persistence.workflows.TokenExchangeIT.testConcurrentTokenExchangeLoggingSegregation</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:351)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:322)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:336)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:556)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:346)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:909)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:492)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/1/testReport/org.kie.kogito.quarkus.token.persistence.workflows/TokenExchangeIT/tokenExchange/">org.kie.kogito.quarkus.token.persistence.workflows.TokenExchangeIT.tokenExchange</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:351)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:322)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:336)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:556)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:346)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:909)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:492)<br/> ... 18 more<br/>
   </details>
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [NO-ISSUE] Implement process instance aware logging and context management [incubator-kie-kogito-runtimes]

Posted by "kie-ci3 (via GitHub)" <gi...@apache.org>.
kie-ci3 commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3401153089

   
   **PR job** `#2` was: **UNSTABLE**
   Possible explanation: This should be test failures
   
   
   <details>
   <summary><b>Reproducer</b></summary>
   
   
   
   build-chain build full_downstream  -f 'https://raw.githubusercontent.com/${AUTHOR:apache}/incubator-kie-kogito-pipelines/${BRANCH:main}/.ci/buildchain-config-pr-cdb.yaml' -o 'bc' -p apache/incubator-kie-kogito-runtimes -u https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094 --skipParallelCheckout
   
   NOTE: To install the build-chain tool, please refer to https://github.com/kiegroup/github-action-build-chain#local-execution
   
   </details>
   
   
   Please look here: https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/2/display/redirect
   
   **Test results:**
   - PASSED: 2931
   - FAILED: 7
   
   Those are the test failures: 
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/2/testReport/org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it/KnativeServingAddonIT/___/">org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it.KnativeServingAddonIT.(?)</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:351)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:322)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:336)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:556)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:346)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:909)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:492)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/2/testReport/org.kie.kogito.addons.quarkus.kubernetes/ConfigValueExpanderIT/test/">org.kie.kogito.addons.quarkus.kubernetes.ConfigValueExpanderIT.test</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:351)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:322)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:336)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:556)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:346)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:909)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:492)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/2/testReport/org.kie.kogito.quarkus.workflows/ProcessInstanceLoggingIT/testGeneralContextInNonProcessLogs/">org.kie.kogito.quarkus.workflows.ProcessInstanceLoggingIT.testGeneralContextInNonProcessLogs</a></summary>
   [Should have general context logs] <br/>Expecting actual:<br/>  0L<br/>to be greater than:<br/>  0L<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/2/testReport/org.kie.kogito.quarkus.workflows/TokenExchangeIT/testConcurrentTokenExchangeLoggingSegregation/">org.kie.kogito.quarkus.workflows.TokenExchangeIT.testConcurrentTokenExchangeLoggingSegregation</a></summary>
   [Should have general context logs from concurrent execution] <br/>Expecting actual not to be null
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/2/testReport/org.kie.kogito.quarkus.workflows/TokenExchangeIT/tokenExchange/">org.kie.kogito.quarkus.workflows.TokenExchangeIT.tokenExchange</a></summary>
   [Should have exactly 3 external service requests - one for each executeQueryWithExchange call] <br/>Expected size: 3 but was: 18 in:<br/>[{<br/>  "url" : "/token-exchange-external-service/withExchange",<br/>  "absoluteUrl" : "http://localhost:40305/token-exchange-external-service/withExchange",<br/>  "method" : "POST",<br/>  "clientIp" : "127.0.0.1",<br/>  "headers" : {<br/>    "Accept" : "application/json",<br/>    "Authorization" : "Bearer KEYCLOAK_EXCHANGED_ACCESS_TOKEN",<br/>    "Content-Type" : "application/json",<br/>    "kogitoprocid" : "token_exchange",<br/>    "kogitoprocinstanceid" : "57264d15-3c5e-4764-8b9d-e3e85d87cfec",<br/>    "kogitoprocist" : "Active",<br/>    "kogitoproctype" : "SW",<br/>    "kogitoprocversion" : "1.0",<br/>    "Content-Length" : "87",<br/>    "Host" : "localhost:40305",<br/>    "Connection" : "keep-alive",<br/>    "User-Agent" : "Apache-HttpClient/4.5.14 (Java/17.0.11)"<br/>  },<br/>  "cookies" : { },<br/>  "browserProxyRequest" : false,<br/>  "l
 oggedDate" : 1760434814837,<br/>  "bodyAsBase64" : "eyJwcm9jZXNzSW5zdGFuY2VJZCI6IjU3MjY0ZDE1LTNjNWUtNDc2NC04YjlkLWUzZTg1ZDg3Y2ZlYyIsInF1ZXJ5IjoiU1VDQ0VTU0ZVTF9RVUVSWSJ9",<br/>  "body" : "{\"processInstanceId\":\"57264d15-3c5e-4764-8b9d-e3e85d87cfec\",\"query\":\"SUCCESSFUL_QUERY\"}",<br/>  "protocol" : "HTTP/1.1",<br/>  "scheme" : "http",<br/>  "host" : "localhost",<br/>  "port" : 40305,<br/>  "loggedDateString" : "2025-10-14T09:40:14.837Z",<br/>  "queryParams" : { },<br/>  "formParams" : { }<br/>},<br/>    {<br/>  "url" : "/token-exchange-external-service/withExchange",<br/>  "absoluteUrl" : "http://localhost:40305/token-exchange-external-service/withExchange",<br/>  "method" : "POST",<br/>  "clientIp" : "127.0.0.1",<br/>  "headers" : {<br/>    "Accept" : "application/json",<br/>    "Authorization" : "Bearer KEYCLOAK_EXCHANGED_ACCESS_TOKEN",<br/>    "Content-Type" : "application/json",<br/>    "kogitoprocid" : "token_exchange",<br/>    "kogitoprocinstanceid" : "da0b4ff5-44b8-4e08-b
 20e-7c0b4b6a3121",<br/>    "kogitoprocist" : "Active",<br/>    "kogitoproctype" : "SW",<br/>    "kogitoprocversion" : "1.0",<br/>    "Content-Length" : "87",<br/>    "Host" : "localhost:40305",<br/>    "Connection" : "keep-alive",<br/>    "User-Agent" : "Apache-HttpClient/4.5.14 (Java/17.0.11)"<br/>  },<br/>  "cookies" : { },<br/>  "browserProxyRequest" : false,<br/>  "loggedDate" : 1760434814837,<br/>  "bodyAsBase64" : "eyJwcm9jZXNzSW5zdGFuY2VJZCI6ImRhMGI0ZmY1LTQ0YjgtNGUwOC1iMjBlLTdjMGI0YjZhMzEyMSIsInF1ZXJ5IjoiU1VDQ0VTU0ZVTF9RVUVSWSJ9",<br/>  "body" : "{\"processInstanceId\":\"da0b4ff5-44b8-4e08-b20e-7c0b4b6a3121\",\"query\":\"SUCCESSFUL_QUERY\"}",<br/>  "protocol" : "HTTP/1.1",<br/>  "scheme" : "http",<br/>  "host" : "localhost",<br/>  "port" : 40305,<br/>  "loggedDateString" : "2025-10-14T09:40:14.837Z",<br/>  "queryParams" : { },<br/>  "formParams" : { }<br/>},<br/>    {<br/>  "url" : "/token-exchange-external-service/withExchange",<br/>  "absoluteUrl" : "http://localhost:40305/
 token-exchange-external-service/withExchange",<br/>  "method" : "POST",<br/>  "clientIp" : "127.0.0.1",<br/>  "headers" : {<br/>    "Accept" : "application/json",<br/>    "Authorization" : "Bearer KEYCLOAK_EXCHANGED_ACCESS_TOKEN",<br/>    "Content-Type" : "application/json",<br/>    "kogitoprocid" : "token_exchange",<br/>    "kogitoprocinstanceid" : "9ea5c524-b89d-4617-b0c3-2d57aeac4a99",<br/>    "kogitoprocist" : "Active",<br/>    "kogitoproctype" : "SW",<br/>    "kogitoprocversion" : "1.0",<br/>    "Content-Length" : "87",<br/>    "Host" : "localhost:40305",<br/>    "Connection" : "keep-alive",<br/>    "User-Agent" : "Apache-HttpClient/4.5.14 (Java/17.0.11)"<br/>  },<br/>  "cookies" : { },<br/>  "browserProxyRequest" : false,<br/>  "loggedDate" : 1760434814837,<br/>  "bodyAsBase64" : "eyJwcm9jZXNzSW5zdGFuY2VJZCI6IjllYTVjNTI0LWI4OWQtNDYxNy1iMGMzLTJkNTdhZWFjNGE5OSIsInF1ZXJ5IjoiU1VDQ0VTU0ZVTF9RVUVSWSJ9",<br/>  "body" : "{\"processInstanceId\":\"9ea5c524-b89d-4617-b0c3-2d57aeac4a99\",
 \"query\":\"SUCCESSFUL_QUERY\"}",<br/>  "protocol" : "HTTP/1.1",<br/>  "scheme" : "http",<br/>  "host" : "localhost",<br/>  "port" : 40305,<br/>  "loggedDateString" : "2025-10-14T09:40:14.837Z",<br/>  "queryParams" : { },<br/>  "formParams" : { }<br/>},<br/>    {<br/>  "url" : "/token-exchange-external-service/withExchange",<br/>  "absoluteUrl" : "http://localhost:40305/token-exchange-external-service/withExchange",<br/>  "method" : "POST",<br/>  "clientIp" : "127.0.0.1",<br/>  "headers" : {<br/>    "Accept" : "application/json",<br/>    "Authorization" : "Bearer KEYCLOAK_EXCHANGED_ACCESS_TOKEN",<br/>    "Content-Type" : "application/json",<br/>    "kogitoprocid" : "token_exchange",<br/>    "kogitoprocinstanceid" : "ed948f49-e9e0-4d06-ab6a-b10a4dc164de",<br/>    "kogitoprocist" : "Active",<br/>    "kogitoproctype" : "SW",<br/>    "kogitoprocversion" : "1.0",<br/>    "Content-Length" : "87",<br/>    "Host" : "localhost:40305",<br/>    "Connection" : "keep-alive",<br/>    "User-Agent"
  : "Apache-HttpClient/4.5.14 (Java/17.0.11)"<br/>  },<br/>  "cookies" : { },<br/>  "browserProxyRequest" : false,<br/>  "loggedDate" : 1760434814837,<br/>  "bodyAsBase64" : "eyJwcm9jZXNzSW5zdGFuY2VJZCI6ImVkOTQ4ZjQ5LWU5ZTAtNGQwNi1hYjZhLWIxMGE0ZGMxNjRkZSIsInF1ZXJ5IjoiU1VDQ0VTU0ZVTF9RVUVSWSJ9",<br/>  "body" : "{\"processInstanceId\":\"ed948f49-e9e0-4d06-ab6a-b10a4dc164de\",\"query\":\"SUCCESSFUL_QUERY\"}",<br/>  "protocol" : "HTTP/1.1",<br/>  "scheme" : "http",<br/>  "host" : "localhost",<br/>  "port" : 40305,<br/>  "loggedDateString" : "2025-10-14T09:40:14.837Z",<br/>  "queryParams" : { },<br/>  "formParams" : { }<br/>},<br/>    {<br/>  "url" : "/token-exchange-external-service/withExchange",<br/>  "absoluteUrl" : "http://localhost:40305/token-exchange-external-service/withExchange",<br/>  "method" : "POST",<br/>  "clientIp" : "127.0.0.1",<br/>  "headers" : {<br/>    "Accept" : "application/json",<br/>    "Authorization" : "Bearer KEYCLOAK_EXCHANGED_ACCESS_TOKEN",<br/>    "Content-Typ
 e" : "application/json",<br/>    "kogitoprocid" : "token_exchange",<br/>    "kogitoprocinstanceid" : "c3076910-f38c-413e-9de4-588a059ab15b",<br/>    "kogitoprocist" : "Active",<br/>    "kogitoproctype" : "SW",<br/>    "kogitoprocversion" : "1.0",<br/>    "Content-Length" : "87",<br/>    "Host" : "localhost:40305",<br/>    "Connection" : "keep-alive",<br/>    "User-Agent" : "Apache-HttpClient/4.5.14 (Java/17.0.11)"<br/>  },<br/>  "cookies" : { },<br/>  "browserProxyRequest" : false,<br/>  "loggedDate" : 1760434814838,<br/>  "bodyAsBase64" : "eyJwcm9jZXNzSW5zdGFuY2VJZCI6ImMzMDc2OTEwLWYzOGMtNDEzZS05ZGU0LTU4OGEwNTlhYjE1YiIsInF1ZXJ5IjoiU1VDQ0VTU0ZVTF9RVUVSWSJ9",<br/>  "body" : "{\"processInstanceId\":\"c3076910-f38c-413e-9de4-588a059ab15b\",\"query\":\"SUCCESSFUL_QUERY\"}",<br/>  "protocol" : "HTTP/1.1",<br/>  "scheme" : "http",<br/>  "host" : "localhost",<br/>  "port" : 40305,<br/>  "loggedDateString" : "2025-10-14T09:40:14.838Z",<br/>  "queryParams" : { },<br/>  "formParams" : { }<br/>
 },<br/>    {<br/>  "url" : "/token-exchange-external-service/withExchange",<br/>  "absoluteUrl" : "http://localhost:40305/token-exchange-external-service/withExchange",<br/>  "method" : "POST",<br/>  "clientIp" : "127.0.0.1",<br/>  "headers" : {<br/>    "Accept" : "application/json",<br/>    "Authorization" : "Bearer KEYCLOAK_EXCHANGED_ACCESS_TOKEN",<br/>    "Content-Type" : "application/json",<br/>    "kogitoprocid" : "token_exchange",<br/>    "kogitoprocinstanceid" : "57264d15-3c5e-4764-8b9d-e3e85d87cfec",<br/>    "kogitoprocist" : "Active",<br/>    "kogitoproctype" : "SW",<br/>    "kogitoprocversion" : "1.0",<br/>    "Content-Length" : "87",<br/>    "Host" : "localhost:40305",<br/>    "Connection" : "keep-alive",<br/>    "User-Agent" : "Apache-HttpClient/4.5.14 (Java/17.0.11)"<br/>  },<br/>  "cookies" : { },<br/>  "browserProxyRequest" : false,<br/>  "loggedDate" : 1760434815932,<br/>  "bodyAsBase64" : "eyJwcm9jZXNzSW5zdGFuY2VJZCI6IjU3MjY0ZDE1LTNjNWUtNDc2NC04YjlkLWUzZTg1ZDg3Y2ZlY
 yIsInF1ZXJ5IjoiU1VDQ0VTU0ZVTF9RVUVSWSJ9",<br/>  "body" : "{\"processInstanceId\":\"57264d15-3c5e-4764-8b9d-e3e85d87cfec\",\"query\":\"SUCCESSFUL_QUERY\"}",<br/>  "protocol" : "HTTP/1.1",<br/>  "scheme" : "http",<br/>  "host" : "localhost",<br/>  "port" : 40305,<br/>  "loggedDateString" : "2025-10-14T09:40:15.932Z",<br/>  "queryParams" : { },<br/>  "formParams" : { }<br/>},<br/>    {<br/>  "url" : "/token-exchange-external-service/withExchange",<br/>  "absoluteUrl" : "http://localhost:40305/token-exchange-external-service/withExchange",<br/>  "method" : "POST",<br/>  "clientIp" : "127.0.0.1",<br/>  "headers" : {<br/>    "Accept" : "application/json",<br/>    "Authorization" : "Bearer KEYCLOAK_EXCHANGED_ACCESS_TOKEN",<br/>    "Content-Type" : "application/json",<br/>    "kogitoprocid" : "token_exchange",<br/>    "kogitoprocinstanceid" : "9ea5c524-b89d-4617-b0c3-2d57aeac4a99",<br/>    "kogitoprocist" : "Active",<br/>    "kogitoproctype" : "SW",<br/>    "kogitoprocversion" : "1.0",<br/>
     "Content-Length" : "87",<br/>    "Host" : "localhost:40305",<br/>    "Connection" : "keep-alive",<br/>    "User-Agent" : "Apache-HttpClient/4.5.14 (Java/17.0.11)"<br/>  },<br/>  "cookies" : { },<br/>  "browserProxyRequest" : false,<br/>  "loggedDate" : 1760434815932,<br/>  "bodyAsBase64" : "eyJwcm9jZXNzSW5zdGFuY2VJZCI6IjllYTVjNTI0LWI4OWQtNDYxNy1iMGMzLTJkNTdhZWFjNGE5OSIsInF1ZXJ5IjoiU1VDQ0VTU0ZVTF9RVUVSWSJ9",<br/>  "body" : "{\"processInstanceId\":\"9ea5c524-b89d-4617-b0c3-2d57aeac4a99\",\"query\":\"SUCCESSFUL_QUERY\"}",<br/>  "protocol" : "HTTP/1.1",<br/>  "scheme" : "http",<br/>  "host" : "localhost",<br/>  "port" : 40305,<br/>  "loggedDateString" : "2025-10-14T09:40:15.932Z",<br/>  "queryParams" : { },<br/>  "formParams" : { }<br/>},<br/>    {<br/>  "url" : "/token-exchange-external-service/withExchange",<br/>  "absoluteUrl" : "http://localhost:40305/token-exchange-external-service/withExchange",<br/>  "method" : "POST",<br/>  "clientIp" : "127.0.0.1",<br/>  "headers" : {<br/> 
    "Accept" : "application/json",<br/>    "Authorization" : "Bearer KEYCLOAK_EXCHANGED_ACCESS_TOKEN",<br/>    "Content-Type" : "application/json",<br/>    "kogitoprocid" : "token_exchange",<br/>    "kogitoprocinstanceid" : "ed948f49-e9e0-4d06-ab6a-b10a4dc164de",<br/>    "kogitoprocist" : "Active",<br/>    "kogitoproctype" : "SW",<br/>    "kogitoprocversion" : "1.0",<br/>    "Content-Length" : "87",<br/>    "Host" : "localhost:40305",<br/>    "Connection" : "keep-alive",<br/>    "User-Agent" : "Apache-HttpClient/4.5.14 (Java/17.0.11)"<br/>  },<br/>  "cookies" : { },<br/>  "browserProxyRequest" : false,<br/>  "loggedDate" : 1760434815932,<br/>  "bodyAsBase64" : "eyJwcm9jZXNzSW5zdGFuY2VJZCI6ImVkOTQ4ZjQ5LWU5ZTAtNGQwNi1hYjZhLWIxMGE0ZGMxNjRkZSIsInF1ZXJ5IjoiU1VDQ0VTU0ZVTF9RVUVSWSJ9",<br/>  "body" : "{\"processInstanceId\":\"ed948f49-e9e0-4d06-ab6a-b10a4dc164de\",\"query\":\"SUCCESSFUL_QUERY\"}",<br/>  "protocol" : "HTTP/1.1",<br/>  "scheme" : "http",<br/>  "host" : "localhost",<br/>  "port
 " : 40305,<br/>  "loggedDateString" : "2025-10-14T09:40:15.932Z",<br/>  "queryParams" : { },<br/>  "formParams" : { }<br/>},<br/>    {<br/>  "url" : "/token-exchange-external-service/withExchange",<br/>  "absoluteUrl" : "http://localhost:40305/token-exchange-external-service/withExchange",<br/>  "method" : "POST",<br/>  "clientIp" : "127.0.0.1",<br/>  "headers" : {<br/>    "Accept" : "application/json",<br/>    "Authorization" : "Bearer KEYCLOAK_EXCHANGED_ACCESS_TOKEN",<br/>    "Content-Type" : "application/json",<br/>    "kogitoprocid" : "token_exchange",<br/>    "kogitoprocinstanceid" : "c3076910-f38c-413e-9de4-588a059ab15b",<br/>    "kogitoprocist" : "Active",<br/>    "kogitoproctype" : "SW",<br/>    "kogitoprocversion" : "1.0",<br/>    "Content-Length" : "87",<br/>    "Host" : "localhost:40305",<br/>    "Connection" : "keep-alive",<br/>    "User-Agent" : "Apache-HttpClient/4.5.14 (Java/17.0.11)"<br/>  },<br/>  "cookies" : { },<br/>  "browserProxyRequest" : false,<br/>  "loggedDa
 te" : 1760434815933,<br/>  "bodyAsBase64" : "eyJwcm9jZXNzSW5zdGFuY2VJZCI6ImMzMDc2OTEwLWYzOGMtNDEzZS05ZGU0LTU4OGEwNTlhYjE1YiIsInF1ZXJ5IjoiU1VDQ0VTU0ZVTF9RVUVSWSJ9",<br/>  "body" : "{\"processInstanceId\":\"c3076910-f38c-413e-9de4-588a059ab15b\",\"query\":\"SUCCESSFUL_QUERY\"}",<br/>  "protocol" : "HTTP/1.1",<br/>  "scheme" : "http",<br/>  "host" : "localhost",<br/>  "port" : 40305,<br/>  "loggedDateString" : "2025-10-14T09:40:15.933Z",<br/>  "queryParams" : { },<br/>  "formParams" : { }<br/>},<br/>    {<br/>  "url" : "/token-exchange-external-service/withExchange",<br/>  "absoluteUrl" : "http://localhost:40305/token-exchange-external-service/withExchange",<br/>  "method" : "POST",<br/>  "clientIp" : "127.0.0.1",<br/>  "headers" : {<br/>    "Accept" : "application/json",<br/>    "Authorization" : "Bearer KEYCLOAK_EXCHANGED_ACCESS_TOKEN",<br/>    "Content-Type" : "application/json",<br/>    "kogitoprocid" : "token_exchange",<br/>    "kogitoprocinstanceid" : "da0b4ff5-44b8-4e08-b20e-7c0
 b4b6a3121",<br/>    "kogitoprocist" : "Active",<br/>    "kogitoproctype" : "SW",<br/>    "kogitoprocversion" : "1.0",<br/>    "Content-Length" : "87",<br/>    "Host" : "localhost:40305",<br/>    "Connection" : "keep-alive",<br/>    "User-Agent" : "Apache-HttpClient/4.5.14 (Java/17.0.11)"<br/>  },<br/>  "cookies" : { },<br/>  "browserProxyRequest" : false,<br/>  "loggedDate" : 1760434815940,<br/>  "bodyAsBase64" : "eyJwcm9jZXNzSW5zdGFuY2VJZCI6ImRhMGI0ZmY1LTQ0YjgtNGUwOC1iMjBlLTdjMGI0YjZhMzEyMSIsInF1ZXJ5IjoiU1VDQ0VTU0ZVTF9RVUVSWSJ9",<br/>  "body" : "{\"processInstanceId\":\"da0b4ff5-44b8-4e08-b20e-7c0b4b6a3121\",\"query\":\"SUCCESSFUL_QUERY\"}",<br/>  "protocol" : "HTTP/1.1",<br/>  "scheme" : "http",<br/>  "host" : "localhost",<br/>  "port" : 40305,<br/>  "loggedDateString" : "2025-10-14T09:40:15.94Z",<br/>  "queryParams" : { },<br/>  "formParams" : { }<br/>},<br/>    {<br/>  "url" : "/token-exchange-external-service/withExchange",<br/>  "absoluteUrl" : "http://localhost:40305/token-ex
 change-external-service/withExchange",<br/>  "method" : "POST",<br/>  "clientIp" : "127.0.0.1",<br/>  "headers" : {<br/>    "Accept" : "application/json",<br/>    "Authorization" : "Bearer KEYCLOAK_EXCHANGED_ACCESS_TOKEN",<br/>    "Content-Type" : "application/json",<br/>    "kogitoprocid" : "token_exchange",<br/>    "kogitoprocinstanceid" : "c3076910-f38c-413e-9de4-588a059ab15b",<br/>    "kogitoprocist" : "Active",<br/>    "kogitoproctype" : "SW",<br/>    "kogitoprocversion" : "1.0",<br/>    "Content-Length" : "87",<br/>    "Host" : "localhost:40305",<br/>    "Connection" : "keep-alive",<br/>    "User-Agent" : "Apache-HttpClient/4.5.14 (Java/17.0.11)"<br/>  },<br/>  "cookies" : { },<br/>  "browserProxyRequest" : false,<br/>  "loggedDate" : 1760434826024,<br/>  "bodyAsBase64" : "eyJwcm9jZXNzSW5zdGFuY2VJZCI6ImMzMDc2OTEwLWYzOGMtNDEzZS05ZGU0LTU4OGEwNTlhYjE1YiIsInF1ZXJ5IjoiU1VDQ0VTU0ZVTF9RVUVSWSJ9",<br/>  "body" : "{\"processInstanceId\":\"c3076910-f38c-413e-9de4-588a059ab15b\",\"query\
 ":\"SUCCESSFUL_QUERY\"}",<br/>  "protocol" : "HTTP/1.1",<br/>  "scheme" : "http",<br/>  "host" : "localhost",<br/>  "port" : 40305,<br/>  "loggedDateString" : "2025-10-14T09:40:26.024Z",<br/>  "queryParams" : { },<br/>  "formParams" : { }<br/>},<br/>    {<br/>  "url" : "/token-exchange-external-service/withExchange",<br/>  "absoluteUrl" : "http://localhost:40305/token-exchange-external-service/withExchange",<br/>  "method" : "POST",<br/>  "clientIp" : "127.0.0.1",<br/>  "headers" : {<br/>    "Accept" : "application/json",<br/>    "Authorization" : "Bearer KEYCLOAK_EXCHANGED_ACCESS_TOKEN",<br/>    "Content-Type" : "application/json",<br/>    "kogitoprocid" : "token_exchange",<br/>    "kogitoprocinstanceid" : "57264d15-3c5e-4764-8b9d-e3e85d87cfec",<br/>    "kogitoprocist" : "Active",<br/>    "kogitoproctype" : "SW",<br/>    "kogitoprocversion" : "1.0",<br/>    "Content-Length" : "87",<br/>    "Host" : "localhost:40305",<br/>    "Connection" : "keep-alive",<br/>    "User-Agent" : "Apac
 he-HttpClient/4.5.14 (Java/17.0.11)"<br/>  },<br/>  "cookies" : { },<br/>  "browserProxyRequest" : false,<br/>  "loggedDate" : 1760434826025,<br/>  "bodyAsBase64" : "eyJwcm9jZXNzSW5zdGFuY2VJZCI6IjU3MjY0ZDE1LTNjNWUtNDc2NC04YjlkLWUzZTg1ZDg3Y2ZlYyIsInF1ZXJ5IjoiU1VDQ0VTU0ZVTF9RVUVSWSJ9",<br/>  "body" : "{\"processInstanceId\":\"57264d15-3c5e-4764-8b9d-e3e85d87cfec\",\"query\":\"SUCCESSFUL_QUERY\"}",<br/>  "protocol" : "HTTP/1.1",<br/>  "scheme" : "http",<br/>  "host" : "localhost",<br/>  "port" : 40305,<br/>  "loggedDateString" : "2025-10-14T09:40:26.025Z",<br/>  "queryParams" : { },<br/>  "formParams" : { }<br/>},<br/>    {<br/>  "url" : "/token-exchange-external-service/withExchange",<br/>  "absoluteUrl" : "http://localhost:40305/token-exchange-external-service/withExchange",<br/>  "method" : "POST",<br/>  "clientIp" : "127.0.0.1",<br/>  "headers" : {<br/>    "Accept" : "application/json",<br/>    "Authorization" : "Bearer KEYCLOAK_EXCHANGED_ACCESS_TOKEN",<br/>    "Content-Type" : "ap
 plication/json",<br/>    "kogitoprocid" : "token_exchange",<br/>    "kogitoprocinstanceid" : "9ea5c524-b89d-4617-b0c3-2d57aeac4a99",<br/>    "kogitoprocist" : "Active",<br/>    "kogitoproctype" : "SW",<br/>    "kogitoprocversion" : "1.0",<br/>    "Content-Length" : "87",<br/>    "Host" : "localhost:40305",<br/>    "Connection" : "keep-alive",<br/>    "User-Agent" : "Apache-HttpClient/4.5.14 (Java/17.0.11)"<br/>  },<br/>  "cookies" : { },<br/>  "browserProxyRequest" : false,<br/>  "loggedDate" : 1760434826024,<br/>  "bodyAsBase64" : "eyJwcm9jZXNzSW5zdGFuY2VJZCI6IjllYTVjNTI0LWI4OWQtNDYxNy1iMGMzLTJkNTdhZWFjNGE5OSIsInF1ZXJ5IjoiU1VDQ0VTU0ZVTF9RVUVSWSJ9",<br/>  "body" : "{\"processInstanceId\":\"9ea5c524-b89d-4617-b0c3-2d57aeac4a99\",\"query\":\"SUCCESSFUL_QUERY\"}",<br/>  "protocol" : "HTTP/1.1",<br/>  "scheme" : "http",<br/>  "host" : "localhost",<br/>  "port" : 40305,<br/>  "loggedDateString" : "2025-10-14T09:40:26.024Z",<br/>  "queryParams" : { },<br/>  "formParams" : { }<br/>},<br/> 
    {<br/>  "url" : "/token-exchange-external-service/withExchange",<br/>  "absoluteUrl" : "http://localhost:40305/token-exchange-external-service/withExchange",<br/>  "method" : "POST",<br/>  "clientIp" : "127.0.0.1",<br/>  "headers" : {<br/>    "Accept" : "application/json",<br/>    "Authorization" : "Bearer KEYCLOAK_EXCHANGED_ACCESS_TOKEN",<br/>    "Content-Type" : "application/json",<br/>    "kogitoprocid" : "token_exchange",<br/>    "kogitoprocinstanceid" : "ed948f49-e9e0-4d06-ab6a-b10a4dc164de",<br/>    "kogitoprocist" : "Active",<br/>    "kogitoproctype" : "SW",<br/>    "kogitoprocversion" : "1.0",<br/>    "Content-Length" : "87",<br/>    "Host" : "localhost:40305",<br/>    "Connection" : "keep-alive",<br/>    "User-Agent" : "Apache-HttpClient/4.5.14 (Java/17.0.11)"<br/>  },<br/>  "cookies" : { },<br/>  "browserProxyRequest" : false,<br/>  "loggedDate" : 1760434826027,<br/>  "bodyAsBase64" : "eyJwcm9jZXNzSW5zdGFuY2VJZCI6ImVkOTQ4ZjQ5LWU5ZTAtNGQwNi1hYjZhLWIxMGE0ZGMxNjRkZSIsInF1Z
 XJ5IjoiU1VDQ0VTU0ZVTF9RVUVSWSJ9",<br/>  "body" : "{\"processInstanceId\":\"ed948f49-e9e0-4d06-ab6a-b10a4dc164de\",\"query\":\"SUCCESSFUL_QUERY\"}",<br/>  "protocol" : "HTTP/1.1",<br/>  "scheme" : "http",<br/>  "host" : "localhost",<br/>  "port" : 40305,<br/>  "loggedDateString" : "2025-10-14T09:40:26.027Z",<br/>  "queryParams" : { },<br/>  "formParams" : { }<br/>},<br/>    {<br/>  "url" : "/token-exchange-external-service/withExchange",<br/>  "absoluteUrl" : "http://localhost:40305/token-exchange-external-service/withExchange",<br/>  "method" : "POST",<br/>  "clientIp" : "127.0.0.1",<br/>  "headers" : {<br/>    "Accept" : "application/json",<br/>    "Authorization" : "Bearer KEYCLOAK_EXCHANGED_ACCESS_TOKEN",<br/>    "Content-Type" : "application/json",<br/>    "kogitoprocid" : "token_exchange",<br/>    "kogitoprocinstanceid" : "da0b4ff5-44b8-4e08-b20e-7c0b4b6a3121",<br/>    "kogitoprocist" : "Active",<br/>    "kogitoproctype" : "SW",<br/>    "kogitoprocversion" : "1.0",<br/>    "Con
 tent-Length" : "87",<br/>    "Host" : "localhost:40305",<br/>    "Connection" : "keep-alive",<br/>    "User-Agent" : "Apache-HttpClient/4.5.14 (Java/17.0.11)"<br/>  },<br/>  "cookies" : { },<br/>  "browserProxyRequest" : false,<br/>  "loggedDate" : 1760434826032,<br/>  "bodyAsBase64" : "eyJwcm9jZXNzSW5zdGFuY2VJZCI6ImRhMGI0ZmY1LTQ0YjgtNGUwOC1iMjBlLTdjMGI0YjZhMzEyMSIsInF1ZXJ5IjoiU1VDQ0VTU0ZVTF9RVUVSWSJ9",<br/>  "body" : "{\"processInstanceId\":\"da0b4ff5-44b8-4e08-b20e-7c0b4b6a3121\",\"query\":\"SUCCESSFUL_QUERY\"}",<br/>  "protocol" : "HTTP/1.1",<br/>  "scheme" : "http",<br/>  "host" : "localhost",<br/>  "port" : 40305,<br/>  "loggedDateString" : "2025-10-14T09:40:26.032Z",<br/>  "queryParams" : { },<br/>  "formParams" : { }<br/>},<br/>    {<br/>  "url" : "/token-exchange-external-service/withExchange",<br/>  "absoluteUrl" : "http://localhost:40305/token-exchange-external-service/withExchange",<br/>  "method" : "POST",<br/>  "clientIp" : "127.0.0.1",<br/>  "headers" : {<br/>    "Acce
 pt" : "application/json",<br/>    "Authorization" : "Bearer KEYCLOAK_EXCHANGED_ACCESS_TOKEN",<br/>    "Content-Type" : "application/json",<br/>    "kogitoprocid" : "token_exchange",<br/>    "kogitoprocinstanceid" : "bc26a48c-a25b-4d33-8b5d-ef92735580ab",<br/>    "kogitoprocist" : "Active",<br/>    "kogitoproctype" : "SW",<br/>    "kogitoprocversion" : "1.0",<br/>    "Content-Length" : "87",<br/>    "Host" : "localhost:40305",<br/>    "Connection" : "keep-alive",<br/>    "User-Agent" : "Apache-HttpClient/4.5.14 (Java/17.0.11)"<br/>  },<br/>  "cookies" : { },<br/>  "browserProxyRequest" : false,<br/>  "loggedDate" : 1760434826791,<br/>  "bodyAsBase64" : "eyJwcm9jZXNzSW5zdGFuY2VJZCI6ImJjMjZhNDhjLWEyNWItNGQzMy04YjVkLWVmOTI3MzU1ODBhYiIsInF1ZXJ5IjoiU1VDQ0VTU0ZVTF9RVUVSWSJ9",<br/>  "body" : "{\"processInstanceId\":\"bc26a48c-a25b-4d33-8b5d-ef92735580ab\",\"query\":\"SUCCESSFUL_QUERY\"}",<br/>  "protocol" : "HTTP/1.1",<br/>  "scheme" : "http",<br/>  "host" : "localhost",<br/>  "port" : 4030
 5,<br/>  "loggedDateString" : "2025-10-14T09:40:26.791Z",<br/>  "queryParams" : { },<br/>  "formParams" : { }<br/>},<br/>    {<br/>  "url" : "/token-exchange-external-service/withExchange",<br/>  "absoluteUrl" : "http://localhost:40305/token-exchange-external-service/withExchange",<br/>  "method" : "POST",<br/>  "clientIp" : "127.0.0.1",<br/>  "headers" : {<br/>    "Accept" : "application/json",<br/>    "Authorization" : "Bearer KEYCLOAK_EXCHANGED_ACCESS_TOKEN",<br/>    "Content-Type" : "application/json",<br/>    "kogitoprocid" : "token_exchange",<br/>    "kogitoprocinstanceid" : "bc26a48c-a25b-4d33-8b5d-ef92735580ab",<br/>    "kogitoprocist" : "Active",<br/>    "kogitoproctype" : "SW",<br/>    "kogitoprocversion" : "1.0",<br/>    "Content-Length" : "87",<br/>    "Host" : "localhost:40305",<br/>    "Connection" : "keep-alive",<br/>    "User-Agent" : "Apache-HttpClient/4.5.14 (Java/17.0.11)"<br/>  },<br/>  "cookies" : { },<br/>  "browserProxyRequest" : false,<br/>  "loggedDate" : 17
 60434827883,<br/>  "bodyAsBase64" : "eyJwcm9jZXNzSW5zdGFuY2VJZCI6ImJjMjZhNDhjLWEyNWItNGQzMy04YjVkLWVmOTI3MzU1ODBhYiIsInF1ZXJ5IjoiU1VDQ0VTU0ZVTF9RVUVSWSJ9",<br/>  "body" : "{\"processInstanceId\":\"bc26a48c-a25b-4d33-8b5d-ef92735580ab\",\"query\":\"SUCCESSFUL_QUERY\"}",<br/>  "protocol" : "HTTP/1.1",<br/>  "scheme" : "http",<br/>  "host" : "localhost",<br/>  "port" : 40305,<br/>  "loggedDateString" : "2025-10-14T09:40:27.883Z",<br/>  "queryParams" : { },<br/>  "formParams" : { }<br/>},<br/>    {<br/>  "url" : "/token-exchange-external-service/withExchange",<br/>  "absoluteUrl" : "http://localhost:40305/token-exchange-external-service/withExchange",<br/>  "method" : "POST",<br/>  "clientIp" : "127.0.0.1",<br/>  "headers" : {<br/>    "Accept" : "application/json",<br/>    "Authorization" : "Bearer KEYCLOAK_EXCHANGED_ACCESS_TOKEN",<br/>    "Content-Type" : "application/json",<br/>    "kogitoprocid" : "token_exchange",<br/>    "kogitoprocinstanceid" : "bc26a48c-a25b-4d33-8b5d-ef92735580a
 b",<br/>    "kogitoprocist" : "Active",<br/>    "kogitoproctype" : "SW",<br/>    "kogitoprocversion" : "1.0",<br/>    "Content-Length" : "87",<br/>    "Host" : "localhost:40305",<br/>    "Connection" : "keep-alive",<br/>    "User-Agent" : "Apache-HttpClient/4.5.14 (Java/17.0.11)"<br/>  },<br/>  "cookies" : { },<br/>  "browserProxyRequest" : false,<br/>  "loggedDate" : 1760434837967,<br/>  "bodyAsBase64" : "eyJwcm9jZXNzSW5zdGFuY2VJZCI6ImJjMjZhNDhjLWEyNWItNGQzMy04YjVkLWVmOTI3MzU1ODBhYiIsInF1ZXJ5IjoiU1VDQ0VTU0ZVTF9RVUVSWSJ9",<br/>  "body" : "{\"processInstanceId\":\"bc26a48c-a25b-4d33-8b5d-ef92735580ab\",\"query\":\"SUCCESSFUL_QUERY\"}",<br/>  "protocol" : "HTTP/1.1",<br/>  "scheme" : "http",<br/>  "host" : "localhost",<br/>  "port" : 40305,<br/>  "loggedDateString" : "2025-10-14T09:40:37.967Z",<br/>  "queryParams" : { },<br/>  "formParams" : { }<br/>}]
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/2/testReport/org.kie.kogito.quarkus.token.persistence.workflows/TokenExchangeIT/testConcurrentTokenExchangeLoggingSegregation/">org.kie.kogito.quarkus.token.persistence.workflows.TokenExchangeIT.testConcurrentTokenExchangeLoggingSegregation</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:351)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:322)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:336)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:556)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:346)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:909)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:492)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/2/testReport/org.kie.kogito.quarkus.token.persistence.workflows/TokenExchangeIT/tokenExchange/">org.kie.kogito.quarkus.token.persistence.workflows.TokenExchangeIT.tokenExchange</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:351)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:322)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:336)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:556)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:346)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:909)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:492)<br/> ... 18 more<br/>
   </details>
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "wmedvede (via GitHub)" <gi...@apache.org>.
wmedvede commented on code in PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#discussion_r2575984906


##########
kogito-bom/pom.xml:
##########
@@ -2702,6 +2702,38 @@
         <artifactId>sonataflow-quarkus-deployment</artifactId>
         <version>${project.version}</version>
       </dependency>
+      <dependency>
+          <groupId>org.apache.kie.sonataflow</groupId>
+          <artifactId>sonataflow-quarkus-jdbc-token-persistence</artifactId>

Review Comment:
   Hi sorry for being pick on this, but I think these two different features must go in different PRs.
   Othewise it'll make difficult the navigation of the code history, etc. If you don't mind please split.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gabriel-farache (via GitHub)" <gi...@apache.org>.
gabriel-farache commented on code in PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#discussion_r2581445082


##########
kogito-test-utils/src/main/java/org/kie/kogito/test/utils/JsonProcessInstanceLogAnalyzer.java:
##########
@@ -0,0 +1,559 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.kie.kogito.test.utils;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.time.format.DateTimeParseException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.fail;
+
+/**
+ * Utility class for analyzing process instance aware logging in JSON format.
+ * Supports parsing JSON log format with MDC fields including processInstanceId.
+ * This class replaces pipe-delimited format parsing for machine-consumable JSON logs.
+ */
+public class JsonProcessInstanceLogAnalyzer {
+
+    private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
+
+    // Common timestamp patterns in JSON logs
+    private static final DateTimeFormatter[] TIMESTAMP_FORMATTERS = {
+            DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"),
+            DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSX"),
+            DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS"),
+            DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"),
+            DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss,SSS"),
+            DateTimeFormatter.ISO_LOCAL_DATE_TIME
+    };
+
+    /**
+     * Represents a single JSON log entry with all its components.
+     */
+    public static class JsonLogEntry {
+        public final LocalDateTime timestamp;
+        public final String level;
+        public final String loggerName;
+        public final String message;
+        public final Map<String, String> mdc;
+        public final String threadName;
+        public final String sequenceNumber;
+        public final JsonNode rawJson;
+
+        public JsonLogEntry(LocalDateTime timestamp, String level, String loggerName,
+                String message, Map<String, String> mdc, String threadName,
+                String sequenceNumber, JsonNode rawJson) {
+            this.timestamp = timestamp;
+            this.level = level != null ? level : "INFO";
+            this.loggerName = loggerName != null ? loggerName : "unknown.logger";
+            this.message = message != null ? message : "";
+            this.mdc = mdc != null ? new HashMap<>(mdc) : new HashMap<>();
+            this.threadName = threadName;
+            this.sequenceNumber = sequenceNumber;
+            this.rawJson = rawJson;
+        }
+
+        /**
+         * Get the process instance ID from MDC.
+         */
+        public String getProcessInstanceId() {
+            return mdc.get("processInstanceId");
+        }
+
+        /**
+         * Check if this log entry has a process instance ID.
+         */
+        public boolean hasProcessInstance() {
+            String processInstanceId = getProcessInstanceId();
+            return processInstanceId != null && !processInstanceId.trim().isEmpty();
+        }
+
+        /**
+         * Check if this log entry is general context (no process instance ID).
+         */
+        public boolean isGeneralContext() {
+            return !hasProcessInstance();
+        }
+
+        /**
+         * Get trace ID from MDC if available.
+         */
+        public String getTraceId() {
+            return mdc.get("traceId");
+        }
+
+        /**
+         * Get span ID from MDC if available.
+         */
+        public String getSpanId() {
+            return mdc.get("spanId");
+        }
+
+        @Override
+        public String toString() {
+            return String.format("JsonLogEntry{timestamp=%s, level=%s, processInstanceId=%s, logger=%s, message=%s}",
+                    timestamp, level, getProcessInstanceId(), loggerName, message);
+        }
+    }
+
+    /**
+     * Statistics about JSON log entries for analysis.
+     */
+    public static class JsonLogStatistics {
+        public final long totalLogs;
+        public final long processSpecificLogs;
+        public final long generalContextLogs;
+        public final Map<String, Long> logsByProcessInstance;
+        public final Map<String, Long> logsByLevel;
+        public final Map<String, Long> logsByLogger;
+        public final long logsWithTracing;
+
+        public JsonLogStatistics(List<JsonLogEntry> entries) {
+            this.totalLogs = entries.size();
+            this.processSpecificLogs = entries.stream().filter(JsonLogEntry::hasProcessInstance).count();
+            this.generalContextLogs = entries.stream().filter(JsonLogEntry::isGeneralContext).count();
+            this.logsByProcessInstance = entries.stream()
+                    .collect(Collectors.groupingBy(
+                            entry -> entry.hasProcessInstance() ? entry.getProcessInstanceId() : "",
+                            Collectors.counting()));
+            this.logsByLevel = entries.stream()
+                    .collect(Collectors.groupingBy(entry -> entry.level, Collectors.counting()));
+            this.logsByLogger = entries.stream()
+                    .collect(Collectors.groupingBy(entry -> entry.loggerName, Collectors.counting()));
+            this.logsWithTracing = entries.stream()
+                    .filter(entry -> entry.getTraceId() != null)
+                    .count();
+        }
+
+        @Override
+        public String toString() {
+            return String.format(
+                    "JsonLogStatistics{total=%d, processSpecific=%d, general=%d, byProcess=%s, byLevel=%s, withTracing=%d}",
+                    totalLogs, processSpecificLogs, generalContextLogs, logsByProcessInstance, logsByLevel, logsWithTracing);
+        }
+    }
+
+    /**
+     * Parse JSON log file with multiline support and resilient error handling.
+     */
+    public static List<JsonLogEntry> parseJsonLogFile(Path logFile) throws IOException {
+        List<String> lines = Files.readAllLines(logFile);
+        List<JsonLogEntry> entries = new ArrayList<>();
+        AtomicInteger malformedLineCount = new AtomicInteger(0);
+        AtomicInteger lineNumber = new AtomicInteger(0);
+
+        for (String line : lines) {
+            lineNumber.incrementAndGet();
+
+            if (line.trim().isEmpty()) {
+                continue; // Skip empty lines
+            }
+
+            try {
+                JsonLogEntry entry = parseJsonLogLine(line, malformedLineCount, lineNumber.get());
+                if (entry != null) {
+                    entries.add(entry);
+                }
+            } catch (Exception e) {
+                malformedLineCount.incrementAndGet();
+                System.err.printf("Warning: Failed to parse JSON log line %d: %s - Error: %s%n",
+                        lineNumber.get(), line.substring(0, Math.min(100, line.length())), e.getMessage());
+            }
+        }
+
+        // Log statistics about parsing
+        if (malformedLineCount.get() > 0) {
+            System.err.printf("Warning: Encountered %d malformed/problematic lines out of %d total lines while parsing %s%n",

Review Comment:
   Good catch, I missed this



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gabriel-farache (via GitHub)" <gi...@apache.org>.
gabriel-farache commented on code in PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#discussion_r2581597138


##########
kogito-test-utils/src/main/java/org/kie/kogito/test/utils/JsonProcessInstanceLoggingTestBase.java:
##########
@@ -0,0 +1,220 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.kie.kogito.test.utils;
+
+import java.io.IOException;
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+/**
+ * Base class for JSON-based process instance logging tests.
+ * Extends the existing ProcessInstanceLoggingTestBase to provide JSON-specific functionality
+ * while maintaining compatibility with existing infrastructure.
+ */
+public abstract class JsonProcessInstanceLoggingTestBase extends ProcessInstanceLoggingTestBase {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(JsonProcessInstanceLoggingTestBase.class);
+
+    /**
+     * Parse all JSON log files (including rotated ones) and combine results.
+     *
+     * @return Combined JSON log entries from all files, sorted by timestamp
+     * @throws IOException if file operations fail
+     */
+    protected List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> parseAllJsonLogFiles() throws IOException {
+        List<Path> logFiles = getAllLogFiles();
+        List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> allEntries = new ArrayList<>();
+
+        LOGGER.info("Parsing {} JSON log files for comprehensive analysis", logFiles.size());
+
+        for (Path logFile : logFiles) {
+            parseJsonLogFile(logFile, allEntries);
+        }
+
+        // Sort all entries by timestamp to ensure chronological order
+        allEntries.sort((e1, e2) -> e1.timestamp.compareTo(e2.timestamp));
+
+        LOGGER.info("Combined {} JSON log entries from {} files", allEntries.size(), logFiles.size());
+
+        if (allEntries.isEmpty()) {
+            throw new IOException("No JSON log entries found in any log files: " + logFiles);
+        }
+
+        // Validate combined results
+        JsonProcessInstanceLogAnalyzer.validateJsonStructure(allEntries);
+
+        return allEntries;
+    }
+
+    private static void parseJsonLogFile(Path logFile, List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> allEntries) {
+        try {
+            LOGGER.info("Parsing JSON log file: {}", logFile);
+            List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> entries =
+                    JsonProcessInstanceLogAnalyzer.parseJsonLogFile(logFile);
+            allEntries.addAll(entries);
+            LOGGER.debug("Added {} entries from {}", entries.size(), logFile.getFileName());
+        } catch (IOException e) {
+            LOGGER.warn("Failed to parse JSON log file {}: {}", logFile, e.getMessage());
+            // Continue with other files rather than failing completely
+        }
+    }
+
+    /**
+     * Calculate and log JSON statistics for debugging.
+     *
+     * @param entries JSON log entries to analyze
+     */
+    protected void logJsonStatistics(List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> entries) {
+        JsonProcessInstanceLogAnalyzer.JsonLogStatistics stats =
+                JsonProcessInstanceLogAnalyzer.calculateJsonStatistics(entries);
+        LOGGER.info("JSON log analysis: {}", stats);
+    }
+
+    /**
+     * Validate that each process instance has distinct JSON log entries using all available log files.
+     *
+     * @param processInstanceIds Process instance IDs to validate
+     * @throws IOException if file operations fail
+     */
+    protected void validateProcessInstanceJsonLogsRobust(String... processInstanceIds) throws IOException {
+        List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> entries = parseAllJsonLogFilesWithRetry();
+
+        Map<String, List<JsonProcessInstanceLogAnalyzer.JsonLogEntry>> entriesByProcess =
+                JsonProcessInstanceLogAnalyzer.groupByProcessInstance(entries);
+
+        JsonProcessInstanceLogAnalyzer.validateProcessInstanceIsolation(
+                entriesByProcess, Set.of(processInstanceIds));
+
+        logJsonStatistics(entries);
+
+        // Verify that all process instances generated logs with their respective IDs
+        for (String processInstanceId : processInstanceIds) {
+            List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> processLogs = entriesByProcess.get(processInstanceId);
+            assertThat(processLogs)
+                    .as("Process instance " + processInstanceId + " should have dedicated JSON log entries")
+                    .isNotEmpty();
+
+            // Validate MDC fields
+            validateJsonMdcFields(processLogs, processInstanceId);
+        }
+
+        LOGGER.info("Process instance JSON logging validation completed for {} process instances (rotation-aware)", processInstanceIds.length);
+    }
+
+    /**
+     * Validate MDC fields in JSON log entries for a specific process instance.
+     */
+    private void validateJsonMdcFields(List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> processLogs, String processInstanceId) {
+        for (JsonProcessInstanceLogAnalyzer.JsonLogEntry entry : processLogs) {
+            assertThat(entry.mdc)
+                    .as("JSON log entry should have MDC fields")
+                    .isNotNull();
+
+            assertThat(entry.getProcessInstanceId())
+                    .as("JSON log entry should have processInstanceId in MDC")
+                    .isEqualTo(processInstanceId);
+        }
+    }
+
+    /**
+     * Parse all JSON log files with retry logic and rotation handling for CI environments.
+     *
+     * @return Parsed JSON log entries from all available log files
+     * @throws IOException if file operations fail after retries
+     */
+    protected List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> parseAllJsonLogFilesWithRetry() throws IOException {
+        int maxRetries = isRunningInCI() ? 3 : 1;
+        IOException lastException = null;
+
+        for (int retry = 0; retry < maxRetries; retry++) {
+            try {
+                List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> entries = parseAllJsonLogFiles(retry, maxRetries);
+                if (entries != null)
+                    return entries;
+
+            } catch (IOException e) {
+                lastException = e;
+                LOGGER.warn("Failed to parse JSON log files (attempt {}/{}): {}", retry + 1, maxRetries, e.getMessage());
+                if (retry < maxRetries - 1) {
+                    try {
+                        Thread.sleep(2000);

Review Comment:
   yes



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gabriel-farache (via GitHub)" <gi...@apache.org>.
gabriel-farache commented on code in PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#discussion_r2581755606


##########
api/kogito-services/src/main/java/org/kie/kogito/services/context/ProcessInstanceContext.java:
##########
@@ -0,0 +1,214 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.kie.kogito.services.context;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.MDC;
+
+/**
+ * Utility class for managing process instance context in logging operations.
+ * This class uses SLF4J's Mapped Diagnostic Context (MDC) to ensure process instance IDs
+ * are automatically included in log messages.
+ *
+ * When no process instance is available, an empty string is used as the default value
+ * to provide cleaner formatting and easier searching in log aggregation systems.
+ *
+ * Thread Safety: This class is thread-safe and properly manages context isolation
+ * between different threads using MDC's inherent ThreadLocal-based storage.
+ */
+public final class ProcessInstanceContext {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(ProcessInstanceContext.class);
+
+    private static final Map<String, ContextExtension> EXTENSIONS = new ConcurrentHashMap<>();
+
+    /**
+     * MDC key used to store the process instance ID.
+     * This key should be referenced in logging configurations.
+     */
+    public static final String MDC_PROCESS_INSTANCE_KEY = "processInstanceId";
+
+    /**
+     * Default value used when no process instance ID is available.
+     * Empty string for cleaner log formatting and easier searching.
+     */
+    public static final String GENERAL_CONTEXT = "";
+
+    // Private constructor to prevent instantiation
+    private ProcessInstanceContext() {
+        // Utility class
+    }
+
+    /**
+     * Sets the process instance ID for the current thread context.
+     * This method updates SLF4J MDC and only performs the update if the value changes.
+     *
+     * @param processInstanceId the process instance ID to set, or null to use general context
+     */
+    public static void setProcessInstanceId(String processInstanceId) {
+        String effectiveId = processInstanceId != null ? processInstanceId : GENERAL_CONTEXT;
+
+        // Only update MDC if the value is changing (optimization)
+        String currentId = MDC.get(MDC_PROCESS_INSTANCE_KEY);
+        if (!effectiveId.equals(currentId)) {
+            MDC.put(MDC_PROCESS_INSTANCE_KEY, effectiveId);
+        }
+    }
+
+    /**
+     * Gets the current process instance ID from MDC.
+     *
+     * @return the current process instance ID, or empty string if no context is set
+     */
+    public static String getProcessInstanceId() {
+        String id = MDC.get(MDC_PROCESS_INSTANCE_KEY);
+        return id != null ? id : GENERAL_CONTEXT;
+    }
+
+    /**
+     * Clears the process instance context for the current thread.
+     * This resets the MDC to the general context (empty string).
+     */
+    public static void clear() {
+        MDC.put(MDC_PROCESS_INSTANCE_KEY, GENERAL_CONTEXT);

Review Comment:
   done



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gabriel-farache (via GitHub)" <gi...@apache.org>.
gabriel-farache commented on code in PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#discussion_r2585960270


##########
addons/common/monitoring/core/src/main/java/org/kie/kogito/monitoring/core/common/process/MetricsProcessEventListener.java:
##########
@@ -134,10 +141,37 @@ protected static double millisToSeconds(long millis) {
         return millis / 1000.0;
     }
 
+    /**
+     * Gets the current process instance ID from MDC for correlation.
+     *
+     * @return the process instance ID, or null if not available
+     */
+    private String getProcessInstanceIdFromContext() {
+        return MDC.get(MDC_PROCESS_INSTANCE_KEY);
+    }
+
+    /**
+     * Logs metric correlation information for debugging and observability.
+     *
+     * @param metricName the name of the metric being recorded
+     * @param processId the process ID
+     * @param processInstanceId the process instance ID (may be null)
+     */
+    private void logMetricCorrelation(String metricName, String processId, String processInstanceId) {
+        if (LOGGER.isDebugEnabled() && processInstanceId != null) {

Review Comment:
   just for debug purposes to see what happens if needs be, we can remove the calls to this method if we feel it's too much
   I removed the condition as it seems not really needed (especially the `LOGGER.isDebugEnabled()` when calling `LOGGER.debug` after) and the fact that `processInstanceId` may be useful when debugging



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [NO-ISSUE] Implement process instance aware logging and context management [incubator-kie-kogito-runtimes]

Posted by "kie-ci3 (via GitHub)" <gi...@apache.org>.
kie-ci3 commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3482580942

   
   **PR job** `#1` was: **UNSTABLE**
   Possible explanation: This should be test failures
   
   
   <details>
   <summary><b>Reproducer</b></summary>
   
   
   
   build-chain build full_downstream  -f 'https://raw.githubusercontent.com/${AUTHOR:apache}/incubator-kie-kogito-pipelines/${BRANCH:main}/.ci/buildchain-config-pr-cdb.yaml' -o 'bc' -p apache/incubator-kie-kogito-runtimes -u https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094 --skipParallelCheckout
   
   NOTE: To install the build-chain tool, please refer to https://github.com/kiegroup/github-action-build-chain#local-execution
   
   </details>
   
   
   Please look here: https://ci-builds.apache.org/job/KIE/job/__dev/job/lightguardjp/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/1/display/redirect
   
   **Test results:**
   - PASSED: 3173
   - FAILED: 1
   
   Those are the test failures: 
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/__dev/job/lightguardjp/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/1/testReport/org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it/KnativeServingAddonIT/___/">org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it.KnativeServingAddonIT.(?)</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [NO-ISSUE] Implement process instance aware logging and context management [incubator-kie-kogito-runtimes]

Posted by "kie-ci3 (via GitHub)" <gi...@apache.org>.
kie-ci3 commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3541453486

   
   **PR job** `#13` was: **UNSTABLE**
   Possible explanation: This should be test failures
   
   
   <details>
   <summary><b>Reproducer</b></summary>
   
   
   
   build-chain build full_downstream  -f 'https://raw.githubusercontent.com/${AUTHOR:apache}/incubator-kie-kogito-pipelines/${BRANCH:main}/.ci/buildchain-config-pr-cdb.yaml' -o 'bc' -p apache/incubator-kie-kogito-runtimes -u https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094 --skipParallelCheckout
   
   NOTE: To install the build-chain tool, please refer to https://github.com/kiegroup/github-action-build-chain#local-execution
   
   </details>
   
   
   Please look here: https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/13/display/redirect
   
   **Test results:**
   - PASSED: 3743
   - FAILED: 5
   
   Those are the test failures: 
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/13/testReport/org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it/KnativeServingAddonIT/___/">org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it.KnativeServingAddonIT.(?)</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/13/testReport/org.kie.kogito.addons.quarkus.kubernetes/ConfigValueExpanderIT/test/">org.kie.kogito.addons.quarkus.kubernetes.ConfigValueExpanderIT.test</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/13/testReport/org.kie.kogito.quarkus.token.persistence.workflows/TokenExchangeIT/tokenExchange/">org.kie.kogito.quarkus.token.persistence.workflows.TokenExchangeIT.tokenExchange</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/13/testReport/org.kie.kogito.quarkus.serverless.workflow.otel/OpenTelemetryIT/shouldAddProcessErrorEventWhenProcessFails/">org.kie.kogito.quarkus.serverless.workflow.otel.OpenTelemetryIT.shouldAddProcessErrorEventWhenProcessFails</a></summary>
   Assertion condition defined as a Lambda expression in org.kie.kogito.quarkus.serverless.workflow.otel.OpenTelemetryIT process.instance.error event not found in error workflow execution within 10 seconds.
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/13/testReport/org.kie.kogito.quarkus.serverless.workflow.otel/OpenTelemetryIT/shouldAddProcessCompleteEventToLastNodeSpan/">org.kie.kogito.quarkus.serverless.workflow.otel.OpenTelemetryIT.shouldAddProcessCompleteEventToLastNodeSpan</a></summary>
   Assertion condition defined as a Lambda expression in org.kie.kogito.quarkus.serverless.workflow.otel.OpenTelemetryIT Event 'process.instance.complete' not found on span within 10 seconds.
   </details>
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "kie-ci3 (via GitHub)" <gi...@apache.org>.
kie-ci3 commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3661752673

   
   **PR job** `#36` was: **UNSTABLE**
   Possible explanation: This should be test failures
   
   
   <details>
   <summary><b>Reproducer</b></summary>
   
   
   
   build-chain build full_downstream  -f 'https://raw.githubusercontent.com/${AUTHOR:apache}/incubator-kie-kogito-pipelines/${BRANCH:main}/.ci/buildchain-config-pr-cdb.yaml' -o 'bc' -p apache/incubator-kie-kogito-runtimes -u https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094 --skipParallelCheckout
   
   NOTE: To install the build-chain tool, please refer to https://github.com/kiegroup/github-action-build-chain#local-execution
   
   </details>
   
   
   Please look here: https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/36/display/redirect
   
   **Test results:**
   - PASSED: 3768
   - FAILED: 5
   
   Those are the test failures: 
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/36/testReport/org.kie.kogito.addons.jwt.it/JwtParserIT/testJwtParserWorkflowEndToEnd/">org.kie.kogito.addons.jwt.it.JwtParserIT.testJwtParserWorkflowEndToEnd</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/36/testReport/org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it/KnativeServingAddonIT/___/">org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it.KnativeServingAddonIT.(?)</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/36/testReport/org.kie.kogito.addons.quarkus.kubernetes/ConfigValueExpanderIT/test/">org.kie.kogito.addons.quarkus.kubernetes.ConfigValueExpanderIT.test</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/36/testReport/org.kie.kogito.quarkus.token.persistence.workflows/TokenExchangeIT/tokenExchange/">org.kie.kogito.quarkus.token.persistence.workflows.TokenExchangeIT.tokenExchange</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/36/testReport/org.kie.kogito.integrationtests.quarkus/TaskIT/testUpdateTaskInfo/">org.kie.kogito.integrationtests.quarkus.TaskIT.testUpdateTaskInfo</a></summary>
   1 expectation failed.<br/>Expected status code <403> but was <200>.<br/>
   </details>
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "kie-ci3 (via GitHub)" <gi...@apache.org>.
kie-ci3 commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3633480549

   
   **PR job** `#34` was: **UNSTABLE**
   Possible explanation: This should be test failures
   
   
   <details>
   <summary><b>Reproducer</b></summary>
   
   
   
   build-chain build full_downstream  -f 'https://raw.githubusercontent.com/${AUTHOR:apache}/incubator-kie-kogito-pipelines/${BRANCH:main}/.ci/buildchain-config-pr-cdb.yaml' -o 'bc' -p apache/incubator-kie-kogito-runtimes -u https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094 --skipParallelCheckout
   
   NOTE: To install the build-chain tool, please refer to https://github.com/kiegroup/github-action-build-chain#local-execution
   
   </details>
   
   
   Please look here: https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/34/display/redirect
   
   **Test results:**
   - PASSED: 3760
   - FAILED: 4
   
   Those are the test failures: 
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/34/testReport/org.kie.kogito.addons.jwt.it/JwtParserIT/testJwtParserWorkflowEndToEnd/">org.kie.kogito.addons.jwt.it.JwtParserIT.testJwtParserWorkflowEndToEnd</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/34/testReport/org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it/KnativeServingAddonIT/___/">org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it.KnativeServingAddonIT.(?)</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/34/testReport/org.kie.kogito.addons.quarkus.kubernetes/ConfigValueExpanderIT/test/">org.kie.kogito.addons.quarkus.kubernetes.ConfigValueExpanderIT.test</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/34/testReport/org.kie.kogito.quarkus.token.persistence.workflows/TokenExchangeIT/tokenExchange/">org.kie.kogito.quarkus.token.persistence.workflows.TokenExchangeIT.tokenExchange</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gabriel-farache (via GitHub)" <gi...@apache.org>.
gabriel-farache commented on code in PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#discussion_r2588610278


##########
jbpm/jbpm-flow/src/main/java/org/kie/kogito/process/impl/AbstractProcessInstance.java:
##########
@@ -225,9 +226,35 @@ protected void reconnect() {
         }
         getProcessRuntime().getProcessInstanceManager().setLock(((MutableProcessInstances<T>) process.instances()).lock());
         processInstance.setMetaData(KOGITO_PROCESS_INSTANCE, this);
+
+        restoreProcessInstanceContext();
+
         processInstance.reconnect();
     }
 
+    private void restoreProcessInstanceContext() {
+        Map<String, List<String>> headers = processInstance.getHeaders();
+        if (headers != null && !headers.isEmpty()) {
+            Map<String, String> contextMap = convertHeadersToContextMap(headers);
+            if (!contextMap.isEmpty()) {
+                org.kie.kogito.services.context.ProcessInstanceContext.setContextFromAsync(contextMap);

Review Comment:
   Ah! yes, you are right; I was too focused on inter-thread interaction that it slipped my mind that even within the same thread, this could be called by another part of the code which will result in context loss
   
   Let me add
   ```
   Map<String, String> currentMdc = MDC.getCopyOfContextMap();
         if (currentMdc != null) {
           contextMap.putAll(currentMdc); // Preserve existing
         }
   ```
   in the top of `setContextFromAsync` to save the MDC already present
   This will preserve the core keys and extends the extensions related keys
   
   Does it make sense?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [NO-ISSUE] Implement process instance aware logging and context management [incubator-kie-kogito-runtimes]

Posted by "kie-ci3 (via GitHub)" <gi...@apache.org>.
kie-ci3 commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3480298672

   
   **PR job** `#11` was: **UNSTABLE**
   Possible explanation: This should be test failures
   
   
   <details>
   <summary><b>Reproducer</b></summary>
   
   
   
   build-chain build full_downstream  -f 'https://raw.githubusercontent.com/${AUTHOR:apache}/incubator-kie-kogito-pipelines/${BRANCH:main}/.ci/buildchain-config-pr-cdb.yaml' -o 'bc' -p apache/incubator-kie-kogito-runtimes -u https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094 --skipParallelCheckout
   
   NOTE: To install the build-chain tool, please refer to https://github.com/kiegroup/github-action-build-chain#local-execution
   
   </details>
   
   
   Please look here: https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/11/display/redirect
   
   **Test results:**
   - PASSED: 3708
   - FAILED: 3
   
   Those are the test failures: 
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/11/testReport/org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it/KnativeServingAddonIT/___/">org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it.KnativeServingAddonIT.(?)</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/11/testReport/org.kie.kogito.addons.quarkus.kubernetes/ConfigValueExpanderIT/test/">org.kie.kogito.addons.quarkus.kubernetes.ConfigValueExpanderIT.test</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/11/testReport/org.kie.kogito.quarkus.token.persistence.workflows/TokenExchangeIT/tokenExchange/">org.kie.kogito.quarkus.token.persistence.workflows.TokenExchangeIT.tokenExchange</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gabriel-farache (via GitHub)" <gi...@apache.org>.
gabriel-farache commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3553627687

   > @gabriel-farache sorry I haven't seen this PR until you marked me in your last comment.
   
   No worries, I only marked it as ready earlier this week ;)


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gabriel-farache (via GitHub)" <gi...@apache.org>.
gabriel-farache commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3632316147

   @wmedvede I works for me now: 
   <img width="1907" height="599" alt="image" src="https://github.com/user-attachments/assets/94e5d07e-5919-4ff9-a73d-c81959431440" />
   
   See https://github.com/gabriel-farache/test-sonataflow-opentelemetry for the changes I made (especially the dependency change since I moved it to addons)


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "pkliczewski (via GitHub)" <gi...@apache.org>.
pkliczewski commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3642345390

   @gabriel-farache @wmedvede what do we need to do to finish this PR?


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "kie-ci3 (via GitHub)" <gi...@apache.org>.
kie-ci3 commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3710676701

   
   **PR job** `#41` was: **UNSTABLE**
   Possible explanation: This should be test failures
   
   
   <details>
   <summary><b>Reproducer</b></summary>
   
   
   
   build-chain build full_downstream  -f 'https://raw.githubusercontent.com/${AUTHOR:apache}/incubator-kie-kogito-pipelines/${BRANCH:main}/.ci/buildchain-config-pr-cdb.yaml' -o 'bc' -p apache/incubator-kie-kogito-runtimes -u https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094 --skipParallelCheckout
   
   NOTE: To install the build-chain tool, please refer to https://github.com/kiegroup/github-action-build-chain#local-execution
   
   </details>
   
   
   Please look here: https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/41/display/redirect
   
   **Test results:**
   - PASSED: 3838
   - FAILED: 4
   
   Those are the test failures: 
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/41/testReport/org.kie.kogito.addons.jwt.it/JwtParserIT/testJwtParserWorkflowEndToEnd/">org.kie.kogito.addons.jwt.it.JwtParserIT.testJwtParserWorkflowEndToEnd</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/41/testReport/org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it/KnativeServingAddonIT/___/">org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it.KnativeServingAddonIT.(?)</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/41/testReport/org.kie.kogito.addons.quarkus.kubernetes/ConfigValueExpanderIT/test/">org.kie.kogito.addons.quarkus.kubernetes.ConfigValueExpanderIT.test</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/41/testReport/org.kie.kogito.quarkus.token.persistence.workflows/TokenExchangeIT/tokenExchange/">org.kie.kogito.quarkus.token.persistence.workflows.TokenExchangeIT.tokenExchange</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gabriel-farache (via GitHub)" <gi...@apache.org>.
gabriel-farache commented on code in PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#discussion_r2584772514


##########
quarkus/extensions/kogito-quarkus-serverless-workflow-otel-extension/kogito-quarkus-serverless-workflow-otel/src/main/java/org/kie/kogito/quarkus/serverless/workflow/otel/NodeSpanManager.java:
##########
@@ -0,0 +1,235 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.kie.kogito.quarkus.serverless.workflow.otel;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.kie.kogito.quarkus.serverless.workflow.otel.config.SonataFlowOtelConfig;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import io.opentelemetry.api.common.Attributes;
+import io.opentelemetry.api.trace.Span;
+import io.opentelemetry.api.trace.SpanKind;
+import io.opentelemetry.api.trace.StatusCode;
+import io.opentelemetry.api.trace.Tracer;
+import io.opentelemetry.context.Context;
+import io.opentelemetry.context.Scope;
+
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.inject.Inject;
+
+import static org.kie.kogito.quarkus.serverless.workflow.otel.SonataFlowOtelAttributes.EVENT_DESCRIPTION;
+import static org.kie.kogito.quarkus.serverless.workflow.otel.SonataFlowOtelAttributes.RequestProperties;
+import static org.kie.kogito.quarkus.serverless.workflow.otel.SonataFlowOtelAttributes.SERVICE_NAME;
+import static org.kie.kogito.quarkus.serverless.workflow.otel.SonataFlowOtelAttributes.SERVICE_VERSION;
+import static org.kie.kogito.quarkus.serverless.workflow.otel.SonataFlowOtelAttributes.SONATAFLOW_PROCESS_ID;
+import static org.kie.kogito.quarkus.serverless.workflow.otel.SonataFlowOtelAttributes.SONATAFLOW_PROCESS_INSTANCE_ID;
+import static org.kie.kogito.quarkus.serverless.workflow.otel.SonataFlowOtelAttributes.SONATAFLOW_PROCESS_INSTANCE_NODE;
+import static org.kie.kogito.quarkus.serverless.workflow.otel.SonataFlowOtelAttributes.SONATAFLOW_PROCESS_INSTANCE_STATE;
+import static org.kie.kogito.quarkus.serverless.workflow.otel.SonataFlowOtelAttributes.SONATAFLOW_PROCESS_VERSION;
+import static org.kie.kogito.quarkus.serverless.workflow.otel.SonataFlowOtelAttributes.SONATAFLOW_TRANSACTION_ID;
+import static org.kie.kogito.quarkus.serverless.workflow.otel.SonataFlowOtelAttributes.SpanNames;
+import static org.kie.kogito.quarkus.serverless.workflow.otel.SonataFlowOtelAttributes.TrackerAttributes;
+
+@ApplicationScoped
+public class NodeSpanManager {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(NodeSpanManager.class);
+    private final Tracer tracer;
+    private final SonataFlowOtelConfig config;
+    private final Map<String, Span> activeNodeSpans = new ConcurrentHashMap<>();
+    private final Map<String, Scope> activeNodeScopes = new ConcurrentHashMap<>();
+    private final Map<String, Span> lastActiveNodeSpan = new ConcurrentHashMap<>();
+
+    @Inject
+    public NodeSpanManager(Tracer tracer, SonataFlowOtelConfig config) {
+        this.tracer = tracer;
+        this.config = config;
+    }
+
+    public Span createNodeSpan(String processInstanceId, String processId, String processVersion, String processState, String nodeId) {
+        if (!config.enabled() || !config.spans().enabled()) {
+            return null;
+        }
+
+        String spanName = SpanNames.createProcessSpanName(processId);
+
+        Span span = tracer.spanBuilder(spanName)
+                .setParent(Context.current()) // Use current context for trace propagation
+                .setSpanKind(SpanKind.INTERNAL)
+                .setAttribute(SONATAFLOW_PROCESS_INSTANCE_ID, processInstanceId)
+                .setAttribute(SONATAFLOW_PROCESS_ID, processId)
+                .setAttribute(SONATAFLOW_PROCESS_VERSION, processVersion)
+                .setAttribute(SONATAFLOW_PROCESS_INSTANCE_STATE, processState)
+                .setAttribute(SERVICE_NAME, config.serviceName())
+                .setAttribute(SERVICE_VERSION, config.serviceVersion())
+                .setAttribute(SONATAFLOW_PROCESS_INSTANCE_NODE, nodeId)
+                .startSpan();
+
+        String spanKey = processInstanceId + ":" + nodeId;
+        Scope scope = span.makeCurrent();
+        activeNodeSpans.put(spanKey, span);
+        activeNodeScopes.put(spanKey, scope);

Review Comment:
   should be better now



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gabriel-farache (via GitHub)" <gi...@apache.org>.
gabriel-farache commented on code in PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#discussion_r2581457831


##########
api/kogito-services/src/main/java/org/kie/kogito/services/context/ProcessInstanceContext.java:
##########
@@ -0,0 +1,214 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.kie.kogito.services.context;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.MDC;
+
+/**
+ * Utility class for managing process instance context in logging operations.
+ * This class uses SLF4J's Mapped Diagnostic Context (MDC) to ensure process instance IDs
+ * are automatically included in log messages.
+ *
+ * When no process instance is available, an empty string is used as the default value
+ * to provide cleaner formatting and easier searching in log aggregation systems.
+ *
+ * Thread Safety: This class is thread-safe and properly manages context isolation
+ * between different threads using MDC's inherent ThreadLocal-based storage.
+ */
+public final class ProcessInstanceContext {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(ProcessInstanceContext.class);
+
+    private static final Map<String, ContextExtension> EXTENSIONS = new ConcurrentHashMap<>();
+
+    /**
+     * MDC key used to store the process instance ID.
+     * This key should be referenced in logging configurations.
+     */
+    public static final String MDC_PROCESS_INSTANCE_KEY = "processInstanceId";
+
+    /**
+     * Default value used when no process instance ID is available.
+     * Empty string for cleaner log formatting and easier searching.
+     */
+    public static final String GENERAL_CONTEXT = "";
+
+    // Private constructor to prevent instantiation
+    private ProcessInstanceContext() {
+        // Utility class
+    }
+
+    /**
+     * Sets the process instance ID for the current thread context.
+     * This method updates SLF4J MDC and only performs the update if the value changes.
+     *
+     * @param processInstanceId the process instance ID to set, or null to use general context
+     */
+    public static void setProcessInstanceId(String processInstanceId) {
+        String effectiveId = processInstanceId != null ? processInstanceId : GENERAL_CONTEXT;
+
+        // Only update MDC if the value is changing (optimization)
+        String currentId = MDC.get(MDC_PROCESS_INSTANCE_KEY);
+        if (!effectiveId.equals(currentId)) {
+            MDC.put(MDC_PROCESS_INSTANCE_KEY, effectiveId);
+        }
+    }
+
+    /**
+     * Gets the current process instance ID from MDC.
+     *
+     * @return the current process instance ID, or empty string if no context is set
+     */
+    public static String getProcessInstanceId() {
+        String id = MDC.get(MDC_PROCESS_INSTANCE_KEY);
+        return id != null ? id : GENERAL_CONTEXT;
+    }
+
+    /**
+     * Clears the process instance context for the current thread.
+     * This resets the MDC to the general context (empty string).
+     */
+    public static void clear() {
+        MDC.put(MDC_PROCESS_INSTANCE_KEY, GENERAL_CONTEXT);
+    }
+
+    /**
+     * Checks if a process instance context is currently set.
+     *
+     * @return true if a process instance context is set, false otherwise
+     */
+    public static boolean hasContext() {
+        String id = MDC.get(MDC_PROCESS_INSTANCE_KEY);
+        return id != null && !GENERAL_CONTEXT.equals(id);
+    }
+
+    /**
+     * Gets a copy of the current MDC context map for propagation to other threads.
+     * This is useful for async operations that need to maintain the same logging context.
+     *
+     * @return a copy of the current MDC context map, or null if no context is set
+     */
+    public static Map<String, String> copyContextForAsync() {
+        return MDC.getCopyOfContextMap();
+    }
+
+    /**
+     * Sets the MDC context map from a previously copied context.

Review Comment:
   I added in the comment:
   ```
        * Only the core keys and the registered extensions keys will be restored in the MDC
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gabriel-farache (via GitHub)" <gi...@apache.org>.
gabriel-farache commented on code in PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#discussion_r2581731298


##########
quarkus/extensions/kogito-quarkus-serverless-workflow-otel-extension/kogito-quarkus-serverless-workflow-otel/src/main/java/org/kie/kogito/quarkus/serverless/workflow/otel/NodeOtelEventListener.java:
##########
@@ -0,0 +1,310 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.kie.kogito.quarkus.serverless.workflow.otel;
+
+import java.util.Date;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.kie.api.event.process.ProcessCompletedEvent;
+import org.kie.api.event.process.ProcessNodeLeftEvent;
+import org.kie.api.event.process.ProcessNodeTriggeredEvent;
+import org.kie.api.event.process.ProcessStartedEvent;
+import org.kie.kogito.internal.process.event.DefaultKogitoProcessEventListener;
+import org.kie.kogito.internal.process.runtime.KogitoNodeInstance;
+import org.kie.kogito.internal.process.runtime.KogitoProcessInstance;
+import org.kie.kogito.process.ProcessInstance;
+import org.kie.kogito.quarkus.serverless.workflow.otel.config.SonataFlowOtelConfig;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import io.opentelemetry.api.trace.Span;
+
+import static org.kie.kogito.quarkus.serverless.workflow.otel.SonataFlowOtelAttributes.EventDescriptions;
+import static org.kie.kogito.quarkus.serverless.workflow.otel.SonataFlowOtelAttributes.Events;
+import static org.kie.kogito.quarkus.serverless.workflow.otel.SonataFlowOtelAttributes.NodePatterns;
+import static org.kie.kogito.quarkus.serverless.workflow.otel.SonataFlowOtelAttributes.ProcessStates;
+
+public class NodeOtelEventListener extends DefaultKogitoProcessEventListener {
+
+    record NodeProcessDetails(String processInstanceId, String processId, String processVersion, String processState, String nodeId) {
+    }
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(NodeOtelEventListener.class);
+
+    private final NodeSpanManager spanManager;
+    private final SonataFlowOtelConfig config;
+    private final ProcessEventHandler processEventHandler;
+    private final HeaderContextExtractor headerExtractor;
+    private final Set<String> processedErrors = ConcurrentHashMap.newKeySet();
+
+    public NodeOtelEventListener(NodeSpanManager spanManager, SonataFlowOtelConfig config, HeaderContextExtractor headerExtractor) {
+        this.spanManager = spanManager;
+        this.config = config;
+        this.headerExtractor = headerExtractor;
+        this.processEventHandler = new ProcessEventHandler(spanManager, config);
+        LOGGER.debug("NodeOtelEventListener initialized");
+    }
+
+    @Override
+    public void afterProcessStarted(ProcessStartedEvent event) {
+        LOGGER.debug("Process started event received - start event will be added in beforeNodeTriggered");
+    }
+
+    @Override
+    public void beforeNodeTriggered(ProcessNodeTriggeredEvent event) {
+        try {
+            NodeProcessDetails details = extractNodeAndProcessDetails(event);
+
+            if (isInternalNode(details.nodeId())) {
+                LOGGER.trace("Skipping internal node: {}", details.nodeId());
+                return;
+            }
+
+            LOGGER.debug("Node triggered: {} for process instance {} (process: {})",
+                    details.nodeId(), details.processInstanceId(), details.processId());
+
+            Map<String, String> extractedContext = OtelContextHolder.getExtractedContext();
+            if (extractedContext.isEmpty()) {
+                extractedContext = handleContextReestablishment(
+                        (KogitoProcessInstance) event.getProcessInstance(), details.processInstanceId());
+            }
+
+            createAndConfigureNodeSpan(details.processInstanceId(), details.processId(),
+                    details.processVersion(), details.processState(), details.nodeId(), extractedContext);
+
+        } catch (Exception e) {
+            LOGGER.error("Error in beforeNodeTriggered: {}", e.getMessage(), e);
+        }
+    }
+
+    private NodeProcessDetails extractNodeAndProcessDetails(ProcessNodeTriggeredEvent event) {
+        KogitoNodeInstance nodeInstance = (KogitoNodeInstance) event.getNodeInstance();
+        KogitoProcessInstance processInstance = (KogitoProcessInstance) event.getProcessInstance();
+
+        String processInstanceId = processInstance.getId();
+        String processId = processInstance.getProcessId();
+        String processVersion = processInstance.getProcessVersion();
+        String processState = getProcessState(processInstance.getState());
+        String nodeId = nodeInstance.getNodeName();
+
+        return new NodeProcessDetails(processInstanceId, processId, processVersion, processState, nodeId);
+    }
+
+    private Map<String, String> handleContextReestablishment(KogitoProcessInstance processInstance, String processInstanceId) {
+        try {
+            Map<String, java.util.List<String>> processHeaders = processInstance.getHeaders();
+            if (processHeaders != null && !processHeaders.isEmpty()) {
+                Map<String, String> headerContext = headerExtractor.extractFromProcessHeaders(processHeaders);
+                if (!headerContext.isEmpty()) {
+                    populateMDCFromContext(headerContext);
+                    LOGGER.debug("Re-established context from process headers for process instance {}: {}",
+                            processInstanceId, headerContext.keySet());
+                    return headerContext;
+                }
+            }
+        } catch (Exception e) {
+            LOGGER.debug("Failed to extract context from process headers: {}", e.getMessage());
+        }
+        return Map.of();
+    }
+
+    private void createAndConfigureNodeSpan(String processInstanceId, String processId, String processVersion, String processState, String nodeId, Map<String, String> extractedContext) {
+        Span span = spanManager.createNodeSpanWithContext(processInstanceId, processId, processVersion, processState, nodeId, extractedContext);
+
+        if (span != null) {

Review Comment:
   in the NodeSpanManager, I added `LOGGER.debug("Span creation disabled");`  in the `createNodeSpan` method as that's the only reason why the span would be null here



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "kie-ci3 (via GitHub)" <gi...@apache.org>.
kie-ci3 commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3596612664

   
   **PR job** `#26` was: **UNSTABLE**
   Possible explanation: This should be test failures
   
   
   <details>
   <summary><b>Reproducer</b></summary>
   
   
   
   build-chain build full_downstream  -f 'https://raw.githubusercontent.com/${AUTHOR:apache}/incubator-kie-kogito-pipelines/${BRANCH:main}/.ci/buildchain-config-pr-cdb.yaml' -o 'bc' -p apache/incubator-kie-kogito-runtimes -u https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094 --skipParallelCheckout
   
   NOTE: To install the build-chain tool, please refer to https://github.com/kiegroup/github-action-build-chain#local-execution
   
   </details>
   
   
   Please look here: https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/26/display/redirect
   
   **Test results:**
   - PASSED: 3739
   - FAILED: 4
   
   Those are the test failures: 
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/26/testReport/org.kie.kogito.addons.jwt.it/JwtParserIT/testJwtParserWorkflowEndToEnd/">org.kie.kogito.addons.jwt.it.JwtParserIT.testJwtParserWorkflowEndToEnd</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/26/testReport/org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it/KnativeServingAddonIT/___/">org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it.KnativeServingAddonIT.(?)</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/26/testReport/org.kie.kogito.addons.quarkus.kubernetes/ConfigValueExpanderIT/test/">org.kie.kogito.addons.quarkus.kubernetes.ConfigValueExpanderIT.test</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/26/testReport/org.kie.kogito.quarkus.token.persistence.workflows/TokenExchangeIT/tokenExchange/">org.kie.kogito.quarkus.token.persistence.workflows.TokenExchangeIT.tokenExchange</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gmunozfe (via GitHub)" <gi...@apache.org>.
gmunozfe commented on code in PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#discussion_r2580850902


##########
api/kogito-services/src/test/java/org/kie/kogito/services/context/ProcessInstanceContextTest.java:
##########
@@ -0,0 +1,490 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.kie.kogito.services.context;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicReference;
+
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.slf4j.MDC;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+/**
+ * Unit tests for ProcessInstanceContext utility class.
+ * Tests thread safety, context management, and async operations.
+ */
+class ProcessInstanceContextTest {
+
+    private static final String TEST_PROCESS_ID = "test-process-123";
+    private static final String TEST_PROCESS_ID_2 = "test-process-456";
+
+    @BeforeEach
+    void setUp() {
+        // Ensure clean state before each test
+        ProcessInstanceContext.clear();
+    }
+
+    @AfterEach
+    void tearDown() {
+        // Clean up after each test
+        ProcessInstanceContext.clear();
+        ProcessInstanceContext.clearExtensions();
+    }
+
+    @Test
+    void testSetAndGetProcessInstanceId() {
+        // Initially no context (returns empty string)
+        assertEquals(ProcessInstanceContext.GENERAL_CONTEXT, ProcessInstanceContext.getProcessInstanceId());
+        assertFalse(ProcessInstanceContext.hasContext());
+
+        // Set process instance ID
+        ProcessInstanceContext.setProcessInstanceId(TEST_PROCESS_ID);
+
+        // Verify MDC is set
+        assertEquals(TEST_PROCESS_ID, ProcessInstanceContext.getProcessInstanceId());
+        assertEquals(TEST_PROCESS_ID, MDC.get(ProcessInstanceContext.MDC_PROCESS_INSTANCE_KEY));
+        assertTrue(ProcessInstanceContext.hasContext());
+    }
+
+    @Test
+    void testSetNullProcessInstanceId() {
+        ProcessInstanceContext.setProcessInstanceId(null);
+
+        // Should use general context (empty string)
+        assertEquals(ProcessInstanceContext.GENERAL_CONTEXT, ProcessInstanceContext.getProcessInstanceId());
+        assertEquals(ProcessInstanceContext.GENERAL_CONTEXT, MDC.get(ProcessInstanceContext.MDC_PROCESS_INSTANCE_KEY));
+        assertFalse(ProcessInstanceContext.hasContext());
+    }
+
+    @Test
+    void testClearContext() {
+        ProcessInstanceContext.setProcessInstanceId(TEST_PROCESS_ID);
+        assertTrue(ProcessInstanceContext.hasContext());
+
+        ProcessInstanceContext.clear();
+
+        assertEquals(ProcessInstanceContext.GENERAL_CONTEXT, ProcessInstanceContext.getProcessInstanceId());
+        assertEquals(ProcessInstanceContext.GENERAL_CONTEXT, MDC.get(ProcessInstanceContext.MDC_PROCESS_INSTANCE_KEY));
+        assertFalse(ProcessInstanceContext.hasContext());
+    }
+
+    @Test
+    void testContextReplacement() {
+        ProcessInstanceContext.setProcessInstanceId(TEST_PROCESS_ID);
+        assertEquals(TEST_PROCESS_ID, ProcessInstanceContext.getProcessInstanceId());
+
+        // Set different ID - should replace
+        ProcessInstanceContext.setProcessInstanceId(TEST_PROCESS_ID_2);
+        assertEquals(TEST_PROCESS_ID_2, ProcessInstanceContext.getProcessInstanceId());
+
+        // Clear should remove all context
+        ProcessInstanceContext.clear();
+        assertFalse(ProcessInstanceContext.hasContext());
+    }
+
+    @Test
+    void testWithProcessInstanceContextSupplier() {
+        assertFalse(ProcessInstanceContext.hasContext());
+
+        ProcessInstanceContext.setProcessInstanceId(TEST_PROCESS_ID);
+        String result;
+        try {
+            assertEquals(TEST_PROCESS_ID, ProcessInstanceContext.getProcessInstanceId());
+            assertTrue(ProcessInstanceContext.hasContext());
+            result = "test-result";
+        } finally {
+            ProcessInstanceContext.clear();
+        }
+
+        assertEquals("test-result", result);
+        assertFalse(ProcessInstanceContext.hasContext());
+    }
+
+    @Test
+    void testWithProcessInstanceContextRunnable() {
+        assertFalse(ProcessInstanceContext.hasContext());
+        AtomicReference<String> capturedId = new AtomicReference<>();
+
+        ProcessInstanceContext.setProcessInstanceId(TEST_PROCESS_ID);
+        try {
+            capturedId.set(ProcessInstanceContext.getProcessInstanceId());
+        } finally {
+            ProcessInstanceContext.clear();
+        }
+
+        assertEquals(TEST_PROCESS_ID, capturedId.get());
+        assertFalse(ProcessInstanceContext.hasContext());
+    }
+
+    @Test
+    void testWithProcessInstanceContextExceptionHandling() {
+        assertFalse(ProcessInstanceContext.hasContext());
+
+        assertThrows(RuntimeException.class, () -> {
+            ProcessInstanceContext.setProcessInstanceId(TEST_PROCESS_ID);
+            try {
+                assertTrue(ProcessInstanceContext.hasContext());
+                throw new RuntimeException("Test exception");
+            } finally {
+                ProcessInstanceContext.clear();
+            }
+        });
+
+        // Context should be cleared even after exception
+        assertFalse(ProcessInstanceContext.hasContext());
+    }
+
+    @Test
+    void testAsyncContextPropagation() {
+        ProcessInstanceContext.setProcessInstanceId(TEST_PROCESS_ID);
+
+        // Copy context for async operation
+        Map<String, String> contextMap = ProcessInstanceContext.copyContextForAsync();
+        assertNotNull(contextMap);
+        assertEquals(TEST_PROCESS_ID, contextMap.get(ProcessInstanceContext.MDC_PROCESS_INSTANCE_KEY));
+
+        // Clear original context
+        ProcessInstanceContext.clear();
+        assertFalse(ProcessInstanceContext.hasContext());
+
+        // Restore context from async
+        ProcessInstanceContext.setContextFromAsync(contextMap);
+        assertEquals(TEST_PROCESS_ID, ProcessInstanceContext.getProcessInstanceId());
+        assertTrue(ProcessInstanceContext.hasContext());
+    }
+
+    @Test
+    void testAsyncContextWithNullMap() {
+        ProcessInstanceContext.setProcessInstanceId(TEST_PROCESS_ID);
+        assertTrue(ProcessInstanceContext.hasContext());
+
+        // Setting null context map should clear context
+        ProcessInstanceContext.setContextFromAsync(null);
+        assertFalse(ProcessInstanceContext.hasContext());
+        assertEquals(ProcessInstanceContext.GENERAL_CONTEXT, ProcessInstanceContext.getProcessInstanceId());
+    }
+
+    @Test
+    void testThreadIsolation() throws InterruptedException {
+        ExecutorService executor = Executors.newFixedThreadPool(3);
+        CountDownLatch latch = new CountDownLatch(3);
+        AtomicReference<Exception> exception = new AtomicReference<>();
+
+        try {
+            // Thread 1: Set and verify process ID 1
+            executor.submit(() -> {
+                try {
+                    ProcessInstanceContext.setProcessInstanceId("process-1");
+                    Thread.sleep(100); // Allow other threads to run
+                    assertEquals("process-1", ProcessInstanceContext.getProcessInstanceId());
+                } catch (Exception e) {
+                    exception.set(e);
+                } finally {
+                    ProcessInstanceContext.clear();
+                    latch.countDown();
+                }
+            });
+
+            // Thread 2: Set and verify process ID 2
+            executor.submit(() -> {
+                try {
+                    ProcessInstanceContext.setProcessInstanceId("process-2");
+                    Thread.sleep(100); // Allow other threads to run
+                    assertEquals("process-2", ProcessInstanceContext.getProcessInstanceId());
+                } catch (Exception e) {
+                    exception.set(e);
+                } finally {
+                    ProcessInstanceContext.clear();
+                    latch.countDown();
+                }
+            });
+
+            // Thread 3: No context set
+            executor.submit(() -> {
+                try {
+                    Thread.sleep(100); // Allow other threads to run
+                    // In a new thread without context, should return empty string
+                    assertFalse(ProcessInstanceContext.hasContext());
+                } catch (Exception e) {
+                    exception.set(e);
+                } finally {
+                    latch.countDown();
+                }
+            });
+
+            assertTrue(latch.await(5, TimeUnit.SECONDS));
+            assertNull(exception.get());
+
+        } finally {
+            executor.shutdown();
+        }
+    }
+
+    @Test
+    void testAsyncOperationWithContextPropagation() throws Exception {
+        ProcessInstanceContext.setProcessInstanceId(TEST_PROCESS_ID);
+        Map<String, String> contextMap = ProcessInstanceContext.copyContextForAsync();
+
+        CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
+            // Restore context in async thread
+            ProcessInstanceContext.setContextFromAsync(contextMap);
+            try {
+                return ProcessInstanceContext.getProcessInstanceId();
+            } finally {
+                ProcessInstanceContext.clear();
+            }
+        });
+
+        String result = future.get(5, TimeUnit.SECONDS);
+        assertEquals(TEST_PROCESS_ID, result);
+
+        // Original thread context should still be intact
+        assertEquals(TEST_PROCESS_ID, ProcessInstanceContext.getProcessInstanceId());
+    }
+
+    @Test
+    void testMdcIntegration() {
+        // Verify MDC is properly managed
+        ProcessInstanceContext.setProcessInstanceId(TEST_PROCESS_ID);
+
+        assertEquals(TEST_PROCESS_ID, MDC.get(ProcessInstanceContext.MDC_PROCESS_INSTANCE_KEY));
+
+        ProcessInstanceContext.clear();
+
+        assertEquals(ProcessInstanceContext.GENERAL_CONTEXT, MDC.get(ProcessInstanceContext.MDC_PROCESS_INSTANCE_KEY));
+    }
+
+    @Test
+    void testGeneralContextBehavior() {
+        ProcessInstanceContext.setProcessInstanceId(ProcessInstanceContext.GENERAL_CONTEXT);
+
+        assertFalse(ProcessInstanceContext.hasContext());
+        assertEquals(ProcessInstanceContext.GENERAL_CONTEXT, ProcessInstanceContext.getProcessInstanceId());
+        assertEquals(ProcessInstanceContext.GENERAL_CONTEXT, MDC.get(ProcessInstanceContext.MDC_PROCESS_INSTANCE_KEY));
+    }
+
+    @Test
+    void testHasContextAccuracy() {
+        // Initially no context
+        assertFalse(ProcessInstanceContext.hasContext());
+
+        // Set general context explicitly - should not count as having context
+        ProcessInstanceContext.setProcessInstanceId(ProcessInstanceContext.GENERAL_CONTEXT);
+        assertFalse(ProcessInstanceContext.hasContext());
+
+        // Set specific context
+        ProcessInstanceContext.setProcessInstanceId(TEST_PROCESS_ID);
+        assertTrue(ProcessInstanceContext.hasContext());
+
+        // Clear should remove context
+        ProcessInstanceContext.clear();
+        assertFalse(ProcessInstanceContext.hasContext());
+    }
+
+    @Test
+    void testMdcConsistencyAfterOperations() {
+        // Test that MDC always stays consistent after various operations
+
+        // Set process ID
+        ProcessInstanceContext.setProcessInstanceId(TEST_PROCESS_ID);
+        assertEquals(TEST_PROCESS_ID, MDC.get(ProcessInstanceContext.MDC_PROCESS_INSTANCE_KEY));
+
+        // Clear should reset to general context
+        ProcessInstanceContext.clear();
+        assertEquals(ProcessInstanceContext.GENERAL_CONTEXT, MDC.get(ProcessInstanceContext.MDC_PROCESS_INSTANCE_KEY));
+
+        // Setting null should also result in general context
+        ProcessInstanceContext.setProcessInstanceId(null);
+        assertEquals(ProcessInstanceContext.GENERAL_CONTEXT, MDC.get(ProcessInstanceContext.MDC_PROCESS_INSTANCE_KEY));
+    }
+
+    @Test
+    void testOptimizationSkipsSameValue() {
+        // Test that setting the same value twice doesn't update MDC unnecessarily
+        ProcessInstanceContext.setProcessInstanceId(TEST_PROCESS_ID);
+        String mdcValue1 = MDC.get(ProcessInstanceContext.MDC_PROCESS_INSTANCE_KEY);
+
+        // Set same value again
+        ProcessInstanceContext.setProcessInstanceId(TEST_PROCESS_ID);
+        String mdcValue2 = MDC.get(ProcessInstanceContext.MDC_PROCESS_INSTANCE_KEY);
+
+        assertEquals(TEST_PROCESS_ID, mdcValue1);
+        assertEquals(TEST_PROCESS_ID, mdcValue2);
+        assertEquals(mdcValue1, mdcValue2);
+    }
+
+    @Test
+    void testConcurrentAccess() throws InterruptedException {
+        int threadCount = 10;
+        int iterationsPerThread = 1000;
+        ExecutorService executor = Executors.newFixedThreadPool(threadCount);
+        CountDownLatch latch = new CountDownLatch(threadCount);
+        AtomicReference<Exception> exception = new AtomicReference<>();
+
+        for (int t = 0; t < threadCount; t++) {
+            final int threadId = t;
+            executor.submit(() -> {
+                try {
+                    for (int i = 0; i < iterationsPerThread; i++) {
+                        String processId = "thread-" + threadId + "-process-" + i;
+                        ProcessInstanceContext.setProcessInstanceId(processId);
+                        assertEquals(processId, ProcessInstanceContext.getProcessInstanceId());
+                        assertTrue(ProcessInstanceContext.hasContext());
+                        ProcessInstanceContext.clear();
+                    }
+                } catch (Exception e) {
+                    exception.set(e);
+                } finally {
+                    latch.countDown();
+                }
+            });
+        }
+
+        assertTrue(latch.await(30, TimeUnit.SECONDS));
+        assertNull(exception.get());
+
+        executor.shutdown();
+    }
+
+    @Test
+    void testExtensionRegistrationAndRestoration() {
+        // Create a mock extension
+        MockContextExtension extension = new MockContextExtension("test.");
+
+        // Register the extension
+        ProcessInstanceContext.registerExtension("test.", extension);
+
+        // Set up context with both core and extension keys
+        ProcessInstanceContext.setProcessInstanceId(TEST_PROCESS_ID);
+        MDC.put("test.key1", "value1");
+        MDC.put("test.key2", "value2");
+        MDC.put("other.key", "should-not-be-restored");
+
+        // Copy context for async
+        Map<String, String> contextMap = ProcessInstanceContext.copyContextForAsync();
+
+        // Clear MDC
+        ProcessInstanceContext.clear();
+        MDC.clear();
+
+        // Restore context from async
+        ProcessInstanceContext.setContextFromAsync(contextMap);
+
+        // Verify core context is restored
+        assertEquals(TEST_PROCESS_ID, ProcessInstanceContext.getProcessInstanceId());
+
+        // Verify extension was called to restore its keys
+        assertTrue(extension.restoreCalled);
+        assertEquals(2, extension.restoredKeys.size());
+        assertEquals("value1", extension.restoredKeys.get("test.key1"));
+        assertEquals("value2", extension.restoredKeys.get("test.key2"));
+        assertNull(extension.restoredKeys.get("other.key"));
+    }
+
+    @Test
+    void testExtensionRegistrationValidation() {
+        MockContextExtension extension = new MockContextExtension("test.");
+
+        // Test null prefix
+        assertThrows(IllegalArgumentException.class, () -> {
+            ProcessInstanceContext.registerExtension(null, extension);
+        });
+
+        // Test empty prefix
+        assertThrows(IllegalArgumentException.class, () -> {
+            ProcessInstanceContext.registerExtension("", extension);
+        });
+
+        // Test null extension
+        assertThrows(IllegalArgumentException.class, () -> {
+            ProcessInstanceContext.registerExtension("test.", null);
+        });
+    }
+
+    @Test
+    void testExtensionExceptionHandling() {
+        // Create an extension that throws exceptions
+        ContextExtension faultyExtension = new ContextExtension() {
+            @Override
+            public String getMdcKeyPrefix() {
+                return "faulty.";
+            }
+
+            @Override
+            public void restoreKeys(Map<String, String> preservedKeys) {
+                throw new RuntimeException("Extension failure");
+            }
+        };
+
+        ProcessInstanceContext.registerExtension("faulty.", faultyExtension);
+
+        // Set up context
+        ProcessInstanceContext.setProcessInstanceId(TEST_PROCESS_ID);
+        MDC.put("faulty.key", "value");
+
+        Map<String, String> contextMap = ProcessInstanceContext.copyContextForAsync();
+        ProcessInstanceContext.clear();
+
+        // This should not throw, even though the extension fails
+        assertDoesNotThrow(() -> {
+            ProcessInstanceContext.setContextFromAsync(contextMap);
+        });
+
+        // Core functionality should still work
+        assertEquals(TEST_PROCESS_ID, ProcessInstanceContext.getProcessInstanceId());
+    }
+
+    /**
+     * Mock implementation of ContextExtension for testing.
+     */
+    private static class MockContextExtension implements ContextExtension {
+        private final String prefix;
+        boolean restoreCalled = false;
+        Map<String, String> restoredKeys = new HashMap<>();
+
+        MockContextExtension(String prefix) {
+            this.prefix = prefix;
+        }
+
+        @Override
+        public String getMdcKeyPrefix() {
+            return prefix;
+        }
+
+        @Override
+        public void restoreKeys(Map<String, String> preservedKeys) {
+            restoreCalled = true;
+            restoredKeys.clear();
+            restoredKeys.putAll(preservedKeys);
+
+            // Actually restore the keys to MDC for testing
+            preservedKeys.forEach(MDC::put);
+        }
+    }
+

Review Comment:
   As mentioned before, missing test for calling `setContextFromAsync` while MDC already has content and check that it's deleted.



##########
kogito-test-utils/src/main/java/org/kie/kogito/test/utils/JsonProcessInstanceLogAnalyzer.java:
##########
@@ -0,0 +1,559 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.kie.kogito.test.utils;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.time.format.DateTimeParseException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.fail;
+
+/**
+ * Utility class for analyzing process instance aware logging in JSON format.
+ * Supports parsing JSON log format with MDC fields including processInstanceId.
+ * This class replaces pipe-delimited format parsing for machine-consumable JSON logs.
+ */
+public class JsonProcessInstanceLogAnalyzer {
+
+    private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
+
+    // Common timestamp patterns in JSON logs
+    private static final DateTimeFormatter[] TIMESTAMP_FORMATTERS = {
+            DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"),
+            DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSX"),
+            DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS"),
+            DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"),
+            DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss,SSS"),
+            DateTimeFormatter.ISO_LOCAL_DATE_TIME
+    };
+
+    /**
+     * Represents a single JSON log entry with all its components.
+     */
+    public static class JsonLogEntry {
+        public final LocalDateTime timestamp;
+        public final String level;
+        public final String loggerName;
+        public final String message;
+        public final Map<String, String> mdc;
+        public final String threadName;
+        public final String sequenceNumber;
+        public final JsonNode rawJson;
+
+        public JsonLogEntry(LocalDateTime timestamp, String level, String loggerName,
+                String message, Map<String, String> mdc, String threadName,
+                String sequenceNumber, JsonNode rawJson) {
+            this.timestamp = timestamp;
+            this.level = level != null ? level : "INFO";
+            this.loggerName = loggerName != null ? loggerName : "unknown.logger";
+            this.message = message != null ? message : "";
+            this.mdc = mdc != null ? new HashMap<>(mdc) : new HashMap<>();
+            this.threadName = threadName;
+            this.sequenceNumber = sequenceNumber;
+            this.rawJson = rawJson;
+        }
+
+        /**
+         * Get the process instance ID from MDC.
+         */
+        public String getProcessInstanceId() {
+            return mdc.get("processInstanceId");
+        }
+
+        /**
+         * Check if this log entry has a process instance ID.
+         */
+        public boolean hasProcessInstance() {
+            String processInstanceId = getProcessInstanceId();
+            return processInstanceId != null && !processInstanceId.trim().isEmpty();
+        }
+
+        /**
+         * Check if this log entry is general context (no process instance ID).
+         */
+        public boolean isGeneralContext() {
+            return !hasProcessInstance();
+        }
+
+        /**
+         * Get trace ID from MDC if available.
+         */
+        public String getTraceId() {
+            return mdc.get("traceId");
+        }
+
+        /**
+         * Get span ID from MDC if available.
+         */
+        public String getSpanId() {
+            return mdc.get("spanId");
+        }
+
+        @Override
+        public String toString() {
+            return String.format("JsonLogEntry{timestamp=%s, level=%s, processInstanceId=%s, logger=%s, message=%s}",
+                    timestamp, level, getProcessInstanceId(), loggerName, message);
+        }
+    }
+
+    /**
+     * Statistics about JSON log entries for analysis.
+     */
+    public static class JsonLogStatistics {
+        public final long totalLogs;
+        public final long processSpecificLogs;
+        public final long generalContextLogs;
+        public final Map<String, Long> logsByProcessInstance;
+        public final Map<String, Long> logsByLevel;
+        public final Map<String, Long> logsByLogger;
+        public final long logsWithTracing;
+
+        public JsonLogStatistics(List<JsonLogEntry> entries) {
+            this.totalLogs = entries.size();
+            this.processSpecificLogs = entries.stream().filter(JsonLogEntry::hasProcessInstance).count();
+            this.generalContextLogs = entries.stream().filter(JsonLogEntry::isGeneralContext).count();
+            this.logsByProcessInstance = entries.stream()
+                    .collect(Collectors.groupingBy(
+                            entry -> entry.hasProcessInstance() ? entry.getProcessInstanceId() : "",
+                            Collectors.counting()));
+            this.logsByLevel = entries.stream()
+                    .collect(Collectors.groupingBy(entry -> entry.level, Collectors.counting()));
+            this.logsByLogger = entries.stream()
+                    .collect(Collectors.groupingBy(entry -> entry.loggerName, Collectors.counting()));
+            this.logsWithTracing = entries.stream()
+                    .filter(entry -> entry.getTraceId() != null)
+                    .count();
+        }
+
+        @Override
+        public String toString() {
+            return String.format(
+                    "JsonLogStatistics{total=%d, processSpecific=%d, general=%d, byProcess=%s, byLevel=%s, withTracing=%d}",
+                    totalLogs, processSpecificLogs, generalContextLogs, logsByProcessInstance, logsByLevel, logsWithTracing);
+        }
+    }
+
+    /**
+     * Parse JSON log file with multiline support and resilient error handling.
+     */
+    public static List<JsonLogEntry> parseJsonLogFile(Path logFile) throws IOException {
+        List<String> lines = Files.readAllLines(logFile);
+        List<JsonLogEntry> entries = new ArrayList<>();
+        AtomicInteger malformedLineCount = new AtomicInteger(0);
+        AtomicInteger lineNumber = new AtomicInteger(0);
+
+        for (String line : lines) {
+            lineNumber.incrementAndGet();
+
+            if (line.trim().isEmpty()) {
+                continue; // Skip empty lines
+            }
+
+            try {
+                JsonLogEntry entry = parseJsonLogLine(line, malformedLineCount, lineNumber.get());
+                if (entry != null) {
+                    entries.add(entry);
+                }
+            } catch (Exception e) {
+                malformedLineCount.incrementAndGet();
+                System.err.printf("Warning: Failed to parse JSON log line %d: %s - Error: %s%n",
+                        lineNumber.get(), line.substring(0, Math.min(100, line.length())), e.getMessage());
+            }
+        }
+
+        // Log statistics about parsing
+        if (malformedLineCount.get() > 0) {
+            System.err.printf("Warning: Encountered %d malformed/problematic lines out of %d total lines while parsing %s%n",
+                    malformedLineCount.get(), lineNumber.get(), logFile.getFileName());
+        }
+
+        return entries;
+    }
+
+    /**
+     * Parse a single JSON log line into a JsonLogEntry.
+     */
+    private static JsonLogEntry parseJsonLogLine(String line, AtomicInteger malformedLineCount, int lineNumber) {
+        try {
+            JsonNode jsonNode = OBJECT_MAPPER.readTree(line);
+
+            // Extract timestamp
+            LocalDateTime timestamp = parseTimestamp(jsonNode, malformedLineCount);
+
+            // Extract standard fields
+            String level = getTextValue(jsonNode, "level");
+            String loggerName = getTextValue(jsonNode, "loggerName");
+            String message = getTextValue(jsonNode, "message");
+            String threadName = getTextValue(jsonNode, "thread");
+            String sequenceNumber = getTextValue(jsonNode, "sequenceNumber");
+
+            // Extract MDC fields
+            Map<String, String> mdc = extractMdcFields(jsonNode);
+
+            return new JsonLogEntry(timestamp, level, loggerName, message, mdc, threadName, sequenceNumber, jsonNode);
+
+        } catch (JsonProcessingException e) {
+            // Try fallback parsing for non-JSON lines
+            return tryFallbackParsing(line, malformedLineCount, lineNumber);
+        }
+    }
+
+    /**
+     * Extract MDC fields from JSON log entry.
+     */
+    private static Map<String, String> extractMdcFields(JsonNode jsonNode) {
+        Map<String, String> mdc = new HashMap<>();
+
+        // Look for MDC in common field names
+        JsonNode mdcNode = jsonNode.get("mdc");
+        if (mdcNode == null) {
+            mdcNode = jsonNode.get("MDC");
+        }
+        if (mdcNode == null) {
+            mdcNode = jsonNode.get("context");
+        }
+
+        if (mdcNode != null && mdcNode.isObject()) {
+            mdcNode.fields().forEachRemaining(entry -> {
+                String key = entry.getKey();
+                JsonNode value = entry.getValue();
+                if (value.isTextual()) {
+                    mdc.put(key, value.asText());
+                } else if (!value.isNull()) {
+                    mdc.put(key, value.toString());
+                }
+            });
+        }
+
+        // Also check for direct MDC fields at root level (some formats)
+        String[] commonMdcFields = { "processInstanceId", "traceId", "spanId", "userId", "correlationId" };
+        for (String field : commonMdcFields) {
+            JsonNode fieldNode = jsonNode.get(field);
+            if (fieldNode != null && fieldNode.isTextual()) {
+                mdc.put(field, fieldNode.asText());
+            }
+        }
+
+        return mdc;
+    }
+
+    /**
+     * Parse timestamp from JSON node using multiple format attempts.
+     */
+    private static LocalDateTime parseTimestamp(JsonNode jsonNode, AtomicInteger malformedLineCount) {
+        String timestampStr = getTextValue(jsonNode, "timestamp");
+        if (timestampStr == null) {
+            timestampStr = getTextValue(jsonNode, "@timestamp");
+        }
+        if (timestampStr == null) {
+            timestampStr = getTextValue(jsonNode, "time");
+        }
+
+        if (timestampStr != null) {
+            for (DateTimeFormatter formatter : TIMESTAMP_FORMATTERS) {
+                try {
+                    return LocalDateTime.parse(timestampStr, formatter);
+                } catch (DateTimeParseException e) {
+                    // Try next formatter
+                }
+            }
+        }
+
+        // Fallback to current time
+        malformedLineCount.incrementAndGet();
+        return LocalDateTime.now();
+    }
+
+    /**
+     * Get text value from JSON node, handling null checks.
+     */
+    private static String getTextValue(JsonNode node, String fieldName) {
+        JsonNode fieldNode = node.get(fieldName);
+        return fieldNode != null && !fieldNode.isNull() ? fieldNode.asText() : null;
+    }
+
+    /**
+     * Try fallback parsing for non-JSON lines (stack traces, etc.).
+     */
+    private static JsonLogEntry tryFallbackParsing(String line, AtomicInteger malformedLineCount, int lineNumber) {
+        // This could be a stack trace or multiline continuation
+        // For now, create a simple entry
+        malformedLineCount.incrementAndGet();
+
+        Map<String, String> emptyMdc = new HashMap<>();
+        return new JsonLogEntry(
+                LocalDateTime.now(),
+                "INFO",
+                "unknown.logger",
+                line,
+                emptyMdc,

Review Comment:
   you're using an empty MDC to indicate that this is not a proper JSON but a Fallback entry, no?



##########
quarkus/addons/token-exchange/runtime/src/main/java/org/kie/kogito/addons/quarkus/token/exchange/cache/TokenPolicyManager.java:
##########
@@ -55,25 +56,37 @@ public long expireAfterRead(String key, CachedTokens value, long currentTime, lo
     }
 
     /**
-     * Calculate time to expiration based on token's actual expiration time minus proactive refresh buffer
+     * Calculate time to expiration based on token's actual expiration time minus proactive refresh buffer.
+     * This method sets the process instance context from the cache key for proper logging.
      */
     private static long calculateTimeToExpiration(String cacheKey, CachedTokens tokens) {
-        String authName = CacheUtils.extractAuthNameFromCacheKey(cacheKey);
-        long proactiveRefreshSeconds = Math.max(0, ConfigReaderUtils.getProactiveRefreshSeconds(authName));
+        // Extract process instance ID from cache key and set context for logging
+        String processInstanceId = CacheUtils.extractProcessInstanceIdFromCacheKey(cacheKey);
+        if (processInstanceId != null && !processInstanceId.isEmpty()) {
+            ProcessInstanceContext.setProcessInstanceId(processInstanceId);
+        }
 
-        long currentTimeSeconds = TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis());
-        long tokenExpirationSeconds = tokens.expirationTime();
+        try {
+            String authName = CacheUtils.extractAuthNameFromCacheKey(cacheKey);
+            long proactiveRefreshSeconds = Math.max(0, ConfigReaderUtils.getProactiveRefreshSeconds(authName));
 
-        // Schedule refresh proactiveRefreshSeconds before actual expiration
-        long refreshTimeSeconds = tokenExpirationSeconds - proactiveRefreshSeconds;
-        long timeToRefreshSeconds = Math.max(0, refreshTimeSeconds - currentTimeSeconds);
+            long currentTimeSeconds = TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis());
+            long tokenExpirationSeconds = tokens.expirationTime();
 
-        // Convert to nanoseconds for Caffeine
-        long timeToRefreshNanos = TimeUnit.SECONDS.toNanos(timeToRefreshSeconds);
+            // Schedule refresh proactiveRefreshSeconds before actual expiration
+            long refreshTimeSeconds = tokenExpirationSeconds - proactiveRefreshSeconds;
+            long timeToRefreshSeconds = Math.max(0, refreshTimeSeconds - currentTimeSeconds);
 
-        LOGGER.info("Token for key '{}' will be refreshed in {} seconds (expires at {}, refresh buffer {} seconds)",
-                cacheKey, timeToRefreshSeconds, tokenExpirationSeconds, proactiveRefreshSeconds);
+            // Convert to nanoseconds for Caffeine
+            long timeToRefreshNanos = TimeUnit.SECONDS.toNanos(timeToRefreshSeconds);
 
-        return timeToRefreshNanos;
+            LOGGER.info("Token for key '{}' will be refreshed in {} seconds (expires at {}, refresh buffer {} seconds)",
+                    cacheKey, timeToRefreshSeconds, tokenExpirationSeconds, proactiveRefreshSeconds);

Review Comment:
   You could also log currentTimeSeconds, but up to you



##########
api/kogito-services/src/main/java/org/kie/kogito/services/context/ProcessInstanceContext.java:
##########
@@ -0,0 +1,214 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.kie.kogito.services.context;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.MDC;
+
+/**
+ * Utility class for managing process instance context in logging operations.
+ * This class uses SLF4J's Mapped Diagnostic Context (MDC) to ensure process instance IDs
+ * are automatically included in log messages.
+ *
+ * When no process instance is available, an empty string is used as the default value
+ * to provide cleaner formatting and easier searching in log aggregation systems.
+ *
+ * Thread Safety: This class is thread-safe and properly manages context isolation
+ * between different threads using MDC's inherent ThreadLocal-based storage.
+ */
+public final class ProcessInstanceContext {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(ProcessInstanceContext.class);
+
+    private static final Map<String, ContextExtension> EXTENSIONS = new ConcurrentHashMap<>();
+
+    /**
+     * MDC key used to store the process instance ID.
+     * This key should be referenced in logging configurations.
+     */
+    public static final String MDC_PROCESS_INSTANCE_KEY = "processInstanceId";
+
+    /**
+     * Default value used when no process instance ID is available.
+     * Empty string for cleaner log formatting and easier searching.
+     */
+    public static final String GENERAL_CONTEXT = "";
+
+    // Private constructor to prevent instantiation
+    private ProcessInstanceContext() {
+        // Utility class
+    }
+
+    /**
+     * Sets the process instance ID for the current thread context.
+     * This method updates SLF4J MDC and only performs the update if the value changes.
+     *
+     * @param processInstanceId the process instance ID to set, or null to use general context
+     */
+    public static void setProcessInstanceId(String processInstanceId) {
+        String effectiveId = processInstanceId != null ? processInstanceId : GENERAL_CONTEXT;
+
+        // Only update MDC if the value is changing (optimization)
+        String currentId = MDC.get(MDC_PROCESS_INSTANCE_KEY);
+        if (!effectiveId.equals(currentId)) {
+            MDC.put(MDC_PROCESS_INSTANCE_KEY, effectiveId);
+        }
+    }
+
+    /**
+     * Gets the current process instance ID from MDC.
+     *
+     * @return the current process instance ID, or empty string if no context is set
+     */
+    public static String getProcessInstanceId() {
+        String id = MDC.get(MDC_PROCESS_INSTANCE_KEY);
+        return id != null ? id : GENERAL_CONTEXT;
+    }
+
+    /**
+     * Clears the process instance context for the current thread.
+     * This resets the MDC to the general context (empty string).
+     */
+    public static void clear() {
+        MDC.put(MDC_PROCESS_INSTANCE_KEY, GENERAL_CONTEXT);

Review Comment:
   Why reset to empty string instead of removing the key from the context:
   
   ```suggestion
           MDC.remove(MDC_PROCESS_INSTANCE_KEY);
   ```
   
   I think it's a better pattern to reset MDC.



##########
kogito-test-utils/src/main/java/org/kie/kogito/test/utils/JsonProcessInstanceLogAnalyzer.java:
##########
@@ -0,0 +1,559 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.kie.kogito.test.utils;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.time.format.DateTimeParseException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.fail;
+
+/**
+ * Utility class for analyzing process instance aware logging in JSON format.
+ * Supports parsing JSON log format with MDC fields including processInstanceId.
+ * This class replaces pipe-delimited format parsing for machine-consumable JSON logs.
+ */
+public class JsonProcessInstanceLogAnalyzer {
+
+    private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
+
+    // Common timestamp patterns in JSON logs
+    private static final DateTimeFormatter[] TIMESTAMP_FORMATTERS = {
+            DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"),
+            DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSX"),
+            DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS"),
+            DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"),
+            DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss,SSS"),
+            DateTimeFormatter.ISO_LOCAL_DATE_TIME
+    };
+
+    /**
+     * Represents a single JSON log entry with all its components.
+     */
+    public static class JsonLogEntry {
+        public final LocalDateTime timestamp;
+        public final String level;
+        public final String loggerName;
+        public final String message;
+        public final Map<String, String> mdc;
+        public final String threadName;
+        public final String sequenceNumber;
+        public final JsonNode rawJson;
+
+        public JsonLogEntry(LocalDateTime timestamp, String level, String loggerName,
+                String message, Map<String, String> mdc, String threadName,
+                String sequenceNumber, JsonNode rawJson) {
+            this.timestamp = timestamp;
+            this.level = level != null ? level : "INFO";
+            this.loggerName = loggerName != null ? loggerName : "unknown.logger";
+            this.message = message != null ? message : "";
+            this.mdc = mdc != null ? new HashMap<>(mdc) : new HashMap<>();
+            this.threadName = threadName;
+            this.sequenceNumber = sequenceNumber;
+            this.rawJson = rawJson;
+        }
+
+        /**
+         * Get the process instance ID from MDC.
+         */
+        public String getProcessInstanceId() {
+            return mdc.get("processInstanceId");
+        }
+
+        /**
+         * Check if this log entry has a process instance ID.
+         */
+        public boolean hasProcessInstance() {
+            String processInstanceId = getProcessInstanceId();
+            return processInstanceId != null && !processInstanceId.trim().isEmpty();
+        }
+
+        /**
+         * Check if this log entry is general context (no process instance ID).
+         */
+        public boolean isGeneralContext() {
+            return !hasProcessInstance();
+        }
+
+        /**
+         * Get trace ID from MDC if available.
+         */
+        public String getTraceId() {
+            return mdc.get("traceId");
+        }
+
+        /**
+         * Get span ID from MDC if available.
+         */
+        public String getSpanId() {
+            return mdc.get("spanId");
+        }
+
+        @Override
+        public String toString() {
+            return String.format("JsonLogEntry{timestamp=%s, level=%s, processInstanceId=%s, logger=%s, message=%s}",
+                    timestamp, level, getProcessInstanceId(), loggerName, message);
+        }
+    }
+
+    /**
+     * Statistics about JSON log entries for analysis.
+     */
+    public static class JsonLogStatistics {
+        public final long totalLogs;
+        public final long processSpecificLogs;
+        public final long generalContextLogs;
+        public final Map<String, Long> logsByProcessInstance;
+        public final Map<String, Long> logsByLevel;
+        public final Map<String, Long> logsByLogger;
+        public final long logsWithTracing;
+
+        public JsonLogStatistics(List<JsonLogEntry> entries) {
+            this.totalLogs = entries.size();
+            this.processSpecificLogs = entries.stream().filter(JsonLogEntry::hasProcessInstance).count();
+            this.generalContextLogs = entries.stream().filter(JsonLogEntry::isGeneralContext).count();
+            this.logsByProcessInstance = entries.stream()
+                    .collect(Collectors.groupingBy(
+                            entry -> entry.hasProcessInstance() ? entry.getProcessInstanceId() : "",
+                            Collectors.counting()));
+            this.logsByLevel = entries.stream()
+                    .collect(Collectors.groupingBy(entry -> entry.level, Collectors.counting()));
+            this.logsByLogger = entries.stream()
+                    .collect(Collectors.groupingBy(entry -> entry.loggerName, Collectors.counting()));
+            this.logsWithTracing = entries.stream()
+                    .filter(entry -> entry.getTraceId() != null)
+                    .count();
+        }
+
+        @Override
+        public String toString() {
+            return String.format(
+                    "JsonLogStatistics{total=%d, processSpecific=%d, general=%d, byProcess=%s, byLevel=%s, withTracing=%d}",
+                    totalLogs, processSpecificLogs, generalContextLogs, logsByProcessInstance, logsByLevel, logsWithTracing);
+        }
+    }
+
+    /**
+     * Parse JSON log file with multiline support and resilient error handling.
+     */
+    public static List<JsonLogEntry> parseJsonLogFile(Path logFile) throws IOException {
+        List<String> lines = Files.readAllLines(logFile);

Review Comment:
   Reading the entire file in memory works fine for small files. For performance enhancement, probably it's better to read line by line (as it's done below in a stream, instead of loading in memory the whole log file here), wdyt?: 
   
   ```
   try (Stream<String> lines = Files.lines(logFile)) {
           lines.forEach(line -> {
   ```



##########
api/kogito-services/src/main/java/org/kie/kogito/services/context/ProcessInstanceContext.java:
##########
@@ -0,0 +1,214 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.kie.kogito.services.context;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.MDC;
+
+/**
+ * Utility class for managing process instance context in logging operations.
+ * This class uses SLF4J's Mapped Diagnostic Context (MDC) to ensure process instance IDs
+ * are automatically included in log messages.
+ *
+ * When no process instance is available, an empty string is used as the default value
+ * to provide cleaner formatting and easier searching in log aggregation systems.
+ *
+ * Thread Safety: This class is thread-safe and properly manages context isolation
+ * between different threads using MDC's inherent ThreadLocal-based storage.
+ */
+public final class ProcessInstanceContext {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(ProcessInstanceContext.class);
+
+    private static final Map<String, ContextExtension> EXTENSIONS = new ConcurrentHashMap<>();
+
+    /**
+     * MDC key used to store the process instance ID.
+     * This key should be referenced in logging configurations.
+     */
+    public static final String MDC_PROCESS_INSTANCE_KEY = "processInstanceId";
+
+    /**
+     * Default value used when no process instance ID is available.
+     * Empty string for cleaner log formatting and easier searching.
+     */
+    public static final String GENERAL_CONTEXT = "";
+
+    // Private constructor to prevent instantiation
+    private ProcessInstanceContext() {
+        // Utility class
+    }
+
+    /**
+     * Sets the process instance ID for the current thread context.
+     * This method updates SLF4J MDC and only performs the update if the value changes.
+     *
+     * @param processInstanceId the process instance ID to set, or null to use general context
+     */
+    public static void setProcessInstanceId(String processInstanceId) {
+        String effectiveId = processInstanceId != null ? processInstanceId : GENERAL_CONTEXT;
+
+        // Only update MDC if the value is changing (optimization)
+        String currentId = MDC.get(MDC_PROCESS_INSTANCE_KEY);
+        if (!effectiveId.equals(currentId)) {
+            MDC.put(MDC_PROCESS_INSTANCE_KEY, effectiveId);
+        }
+    }
+
+    /**
+     * Gets the current process instance ID from MDC.
+     *
+     * @return the current process instance ID, or empty string if no context is set
+     */
+    public static String getProcessInstanceId() {
+        String id = MDC.get(MDC_PROCESS_INSTANCE_KEY);
+        return id != null ? id : GENERAL_CONTEXT;
+    }
+
+    /**
+     * Clears the process instance context for the current thread.
+     * This resets the MDC to the general context (empty string).
+     */
+    public static void clear() {
+        MDC.put(MDC_PROCESS_INSTANCE_KEY, GENERAL_CONTEXT);
+    }
+
+    /**
+     * Checks if a process instance context is currently set.
+     *
+     * @return true if a process instance context is set, false otherwise
+     */
+    public static boolean hasContext() {
+        String id = MDC.get(MDC_PROCESS_INSTANCE_KEY);
+        return id != null && !GENERAL_CONTEXT.equals(id);
+    }
+
+    /**
+     * Gets a copy of the current MDC context map for propagation to other threads.
+     * This is useful for async operations that need to maintain the same logging context.
+     *
+     * @return a copy of the current MDC context map, or null if no context is set
+     */
+    public static Map<String, String> copyContextForAsync() {
+        return MDC.getCopyOfContextMap();
+    }
+
+    /**
+     * Sets the MDC context map from a previously copied context.
+     * This is useful for async operations that need to restore logging context.
+     *
+     * @param contextMap the context map to restore, or null to reset to general context
+     */
+    public static void setContextFromAsync(Map<String, String> contextMap) {
+        if (contextMap != null) {
+            if (EXTENSIONS.isEmpty()) {
+                MDC.setContextMap(contextMap);
+            } else {
+                // Restore core context first
+                Map<String, String> coreContext = filterCoreKeys(contextMap);
+                MDC.setContextMap(coreContext);
+
+                // Then restore extension-specific keys
+                restoreExtensionKeys(contextMap);
+            }
+        } else {
+            MDC.clear();
+            MDC.put(MDC_PROCESS_INSTANCE_KEY, GENERAL_CONTEXT);
+        }
+    }
+
+    /**
+     * Registers a context extension that will participate in context preservation.
+     *
+     * @param prefix the MDC key prefix this extension manages
+     * @param extension the extension to register
+     * @throws IllegalArgumentException if prefix or extension is null/empty
+     */
+    public static void registerExtension(String prefix, ContextExtension extension) {

Review Comment:
   To avoid accidental collisions, you could also enforce the prefix final char (dot for example). In this case you're forcing to define "user." as prefix and this will never collide with "username", wdyt?



##########
api/kogito-services/src/main/java/org/kie/kogito/services/context/ProcessInstanceContext.java:
##########
@@ -0,0 +1,214 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.kie.kogito.services.context;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.MDC;
+
+/**
+ * Utility class for managing process instance context in logging operations.
+ * This class uses SLF4J's Mapped Diagnostic Context (MDC) to ensure process instance IDs
+ * are automatically included in log messages.
+ *
+ * When no process instance is available, an empty string is used as the default value
+ * to provide cleaner formatting and easier searching in log aggregation systems.
+ *
+ * Thread Safety: This class is thread-safe and properly manages context isolation
+ * between different threads using MDC's inherent ThreadLocal-based storage.
+ */
+public final class ProcessInstanceContext {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(ProcessInstanceContext.class);
+
+    private static final Map<String, ContextExtension> EXTENSIONS = new ConcurrentHashMap<>();
+
+    /**
+     * MDC key used to store the process instance ID.
+     * This key should be referenced in logging configurations.
+     */
+    public static final String MDC_PROCESS_INSTANCE_KEY = "processInstanceId";
+
+    /**
+     * Default value used when no process instance ID is available.
+     * Empty string for cleaner log formatting and easier searching.
+     */
+    public static final String GENERAL_CONTEXT = "";
+
+    // Private constructor to prevent instantiation
+    private ProcessInstanceContext() {
+        // Utility class
+    }
+
+    /**
+     * Sets the process instance ID for the current thread context.
+     * This method updates SLF4J MDC and only performs the update if the value changes.
+     *
+     * @param processInstanceId the process instance ID to set, or null to use general context
+     */
+    public static void setProcessInstanceId(String processInstanceId) {
+        String effectiveId = processInstanceId != null ? processInstanceId : GENERAL_CONTEXT;
+
+        // Only update MDC if the value is changing (optimization)
+        String currentId = MDC.get(MDC_PROCESS_INSTANCE_KEY);
+        if (!effectiveId.equals(currentId)) {
+            MDC.put(MDC_PROCESS_INSTANCE_KEY, effectiveId);
+        }
+    }
+
+    /**
+     * Gets the current process instance ID from MDC.
+     *
+     * @return the current process instance ID, or empty string if no context is set
+     */
+    public static String getProcessInstanceId() {
+        String id = MDC.get(MDC_PROCESS_INSTANCE_KEY);
+        return id != null ? id : GENERAL_CONTEXT;
+    }
+
+    /**
+     * Clears the process instance context for the current thread.
+     * This resets the MDC to the general context (empty string).
+     */
+    public static void clear() {
+        MDC.put(MDC_PROCESS_INSTANCE_KEY, GENERAL_CONTEXT);
+    }
+
+    /**
+     * Checks if a process instance context is currently set.
+     *
+     * @return true if a process instance context is set, false otherwise
+     */
+    public static boolean hasContext() {
+        String id = MDC.get(MDC_PROCESS_INSTANCE_KEY);
+        return id != null && !GENERAL_CONTEXT.equals(id);
+    }
+
+    /**
+     * Gets a copy of the current MDC context map for propagation to other threads.
+     * This is useful for async operations that need to maintain the same logging context.
+     *
+     * @return a copy of the current MDC context map, or null if no context is set
+     */
+    public static Map<String, String> copyContextForAsync() {
+        return MDC.getCopyOfContextMap();
+    }
+
+    /**
+     * Sets the MDC context map from a previously copied context.

Review Comment:
   I would also clarify that only keys included in the copied context (and restored via extensions) will remain, All other MDC values are discarded.



##########
kogito-test-utils/src/main/java/org/kie/kogito/test/utils/JsonProcessInstanceLoggingTestBase.java:
##########
@@ -0,0 +1,220 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.kie.kogito.test.utils;
+
+import java.io.IOException;
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+/**
+ * Base class for JSON-based process instance logging tests.
+ * Extends the existing ProcessInstanceLoggingTestBase to provide JSON-specific functionality
+ * while maintaining compatibility with existing infrastructure.
+ */
+public abstract class JsonProcessInstanceLoggingTestBase extends ProcessInstanceLoggingTestBase {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(JsonProcessInstanceLoggingTestBase.class);
+
+    /**
+     * Parse all JSON log files (including rotated ones) and combine results.
+     *
+     * @return Combined JSON log entries from all files, sorted by timestamp
+     * @throws IOException if file operations fail
+     */
+    protected List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> parseAllJsonLogFiles() throws IOException {
+        List<Path> logFiles = getAllLogFiles();
+        List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> allEntries = new ArrayList<>();
+
+        LOGGER.info("Parsing {} JSON log files for comprehensive analysis", logFiles.size());
+
+        for (Path logFile : logFiles) {
+            parseJsonLogFile(logFile, allEntries);
+        }
+
+        // Sort all entries by timestamp to ensure chronological order
+        allEntries.sort((e1, e2) -> e1.timestamp.compareTo(e2.timestamp));
+
+        LOGGER.info("Combined {} JSON log entries from {} files", allEntries.size(), logFiles.size());
+
+        if (allEntries.isEmpty()) {
+            throw new IOException("No JSON log entries found in any log files: " + logFiles);
+        }
+
+        // Validate combined results
+        JsonProcessInstanceLogAnalyzer.validateJsonStructure(allEntries);
+
+        return allEntries;
+    }
+
+    private static void parseJsonLogFile(Path logFile, List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> allEntries) {
+        try {
+            LOGGER.info("Parsing JSON log file: {}", logFile);
+            List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> entries =
+                    JsonProcessInstanceLogAnalyzer.parseJsonLogFile(logFile);
+            allEntries.addAll(entries);
+            LOGGER.debug("Added {} entries from {}", entries.size(), logFile.getFileName());
+        } catch (IOException e) {
+            LOGGER.warn("Failed to parse JSON log file {}: {}", logFile, e.getMessage());
+            // Continue with other files rather than failing completely
+        }
+    }
+
+    /**
+     * Calculate and log JSON statistics for debugging.
+     *
+     * @param entries JSON log entries to analyze
+     */
+    protected void logJsonStatistics(List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> entries) {
+        JsonProcessInstanceLogAnalyzer.JsonLogStatistics stats =
+                JsonProcessInstanceLogAnalyzer.calculateJsonStatistics(entries);
+        LOGGER.info("JSON log analysis: {}", stats);
+    }
+
+    /**
+     * Validate that each process instance has distinct JSON log entries using all available log files.
+     *
+     * @param processInstanceIds Process instance IDs to validate
+     * @throws IOException if file operations fail
+     */
+    protected void validateProcessInstanceJsonLogsRobust(String... processInstanceIds) throws IOException {
+        List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> entries = parseAllJsonLogFilesWithRetry();
+
+        Map<String, List<JsonProcessInstanceLogAnalyzer.JsonLogEntry>> entriesByProcess =
+                JsonProcessInstanceLogAnalyzer.groupByProcessInstance(entries);
+
+        JsonProcessInstanceLogAnalyzer.validateProcessInstanceIsolation(
+                entriesByProcess, Set.of(processInstanceIds));
+
+        logJsonStatistics(entries);
+
+        // Verify that all process instances generated logs with their respective IDs
+        for (String processInstanceId : processInstanceIds) {
+            List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> processLogs = entriesByProcess.get(processInstanceId);
+            assertThat(processLogs)
+                    .as("Process instance " + processInstanceId + " should have dedicated JSON log entries")
+                    .isNotEmpty();
+
+            // Validate MDC fields
+            validateJsonMdcFields(processLogs, processInstanceId);
+        }
+
+        LOGGER.info("Process instance JSON logging validation completed for {} process instances (rotation-aware)", processInstanceIds.length);
+    }
+
+    /**
+     * Validate MDC fields in JSON log entries for a specific process instance.
+     */
+    private void validateJsonMdcFields(List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> processLogs, String processInstanceId) {
+        for (JsonProcessInstanceLogAnalyzer.JsonLogEntry entry : processLogs) {
+            assertThat(entry.mdc)
+                    .as("JSON log entry should have MDC fields")
+                    .isNotNull();
+
+            assertThat(entry.getProcessInstanceId())
+                    .as("JSON log entry should have processInstanceId in MDC")
+                    .isEqualTo(processInstanceId);
+        }
+    }
+
+    /**
+     * Parse all JSON log files with retry logic and rotation handling for CI environments.
+     *
+     * @return Parsed JSON log entries from all available log files
+     * @throws IOException if file operations fail after retries
+     */
+    protected List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> parseAllJsonLogFilesWithRetry() throws IOException {
+        int maxRetries = isRunningInCI() ? 3 : 1;
+        IOException lastException = null;
+
+        for (int retry = 0; retry < maxRetries; retry++) {
+            try {
+                List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> entries = parseAllJsonLogFiles(retry, maxRetries);
+                if (entries != null)
+                    return entries;
+
+            } catch (IOException e) {
+                lastException = e;
+                LOGGER.warn("Failed to parse JSON log files (attempt {}/{}): {}", retry + 1, maxRetries, e.getMessage());
+                if (retry < maxRetries - 1) {
+                    try {
+                        Thread.sleep(2000);

Review Comment:
   Can you use Awaitility instead of Thread.sleep?



##########
kogito-test-utils/src/main/java/org/kie/kogito/test/utils/JsonProcessInstanceLoggingTestBase.java:
##########
@@ -0,0 +1,220 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.kie.kogito.test.utils;
+
+import java.io.IOException;
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+/**
+ * Base class for JSON-based process instance logging tests.
+ * Extends the existing ProcessInstanceLoggingTestBase to provide JSON-specific functionality
+ * while maintaining compatibility with existing infrastructure.
+ */
+public abstract class JsonProcessInstanceLoggingTestBase extends ProcessInstanceLoggingTestBase {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(JsonProcessInstanceLoggingTestBase.class);
+
+    /**
+     * Parse all JSON log files (including rotated ones) and combine results.
+     *
+     * @return Combined JSON log entries from all files, sorted by timestamp
+     * @throws IOException if file operations fail
+     */
+    protected List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> parseAllJsonLogFiles() throws IOException {
+        List<Path> logFiles = getAllLogFiles();
+        List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> allEntries = new ArrayList<>();
+
+        LOGGER.info("Parsing {} JSON log files for comprehensive analysis", logFiles.size());
+
+        for (Path logFile : logFiles) {
+            parseJsonLogFile(logFile, allEntries);
+        }
+
+        // Sort all entries by timestamp to ensure chronological order
+        allEntries.sort((e1, e2) -> e1.timestamp.compareTo(e2.timestamp));
+
+        LOGGER.info("Combined {} JSON log entries from {} files", allEntries.size(), logFiles.size());
+
+        if (allEntries.isEmpty()) {
+            throw new IOException("No JSON log entries found in any log files: " + logFiles);
+        }
+
+        // Validate combined results
+        JsonProcessInstanceLogAnalyzer.validateJsonStructure(allEntries);
+
+        return allEntries;
+    }
+
+    private static void parseJsonLogFile(Path logFile, List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> allEntries) {
+        try {
+            LOGGER.info("Parsing JSON log file: {}", logFile);
+            List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> entries =
+                    JsonProcessInstanceLogAnalyzer.parseJsonLogFile(logFile);
+            allEntries.addAll(entries);
+            LOGGER.debug("Added {} entries from {}", entries.size(), logFile.getFileName());
+        } catch (IOException e) {
+            LOGGER.warn("Failed to parse JSON log file {}: {}", logFile, e.getMessage());
+            // Continue with other files rather than failing completely
+        }
+    }
+
+    /**
+     * Calculate and log JSON statistics for debugging.
+     *
+     * @param entries JSON log entries to analyze
+     */
+    protected void logJsonStatistics(List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> entries) {
+        JsonProcessInstanceLogAnalyzer.JsonLogStatistics stats =
+                JsonProcessInstanceLogAnalyzer.calculateJsonStatistics(entries);
+        LOGGER.info("JSON log analysis: {}", stats);
+    }
+
+    /**
+     * Validate that each process instance has distinct JSON log entries using all available log files.
+     *
+     * @param processInstanceIds Process instance IDs to validate
+     * @throws IOException if file operations fail
+     */
+    protected void validateProcessInstanceJsonLogsRobust(String... processInstanceIds) throws IOException {
+        List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> entries = parseAllJsonLogFilesWithRetry();
+
+        Map<String, List<JsonProcessInstanceLogAnalyzer.JsonLogEntry>> entriesByProcess =
+                JsonProcessInstanceLogAnalyzer.groupByProcessInstance(entries);
+
+        JsonProcessInstanceLogAnalyzer.validateProcessInstanceIsolation(
+                entriesByProcess, Set.of(processInstanceIds));
+
+        logJsonStatistics(entries);
+
+        // Verify that all process instances generated logs with their respective IDs
+        for (String processInstanceId : processInstanceIds) {
+            List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> processLogs = entriesByProcess.get(processInstanceId);
+            assertThat(processLogs)
+                    .as("Process instance " + processInstanceId + " should have dedicated JSON log entries")
+                    .isNotEmpty();
+
+            // Validate MDC fields
+            validateJsonMdcFields(processLogs, processInstanceId);
+        }
+
+        LOGGER.info("Process instance JSON logging validation completed for {} process instances (rotation-aware)", processInstanceIds.length);
+    }
+
+    /**
+     * Validate MDC fields in JSON log entries for a specific process instance.
+     */
+    private void validateJsonMdcFields(List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> processLogs, String processInstanceId) {
+        for (JsonProcessInstanceLogAnalyzer.JsonLogEntry entry : processLogs) {
+            assertThat(entry.mdc)
+                    .as("JSON log entry should have MDC fields")
+                    .isNotNull();
+
+            assertThat(entry.getProcessInstanceId())
+                    .as("JSON log entry should have processInstanceId in MDC")
+                    .isEqualTo(processInstanceId);
+        }
+    }
+
+    /**
+     * Parse all JSON log files with retry logic and rotation handling for CI environments.
+     *
+     * @return Parsed JSON log entries from all available log files
+     * @throws IOException if file operations fail after retries
+     */
+    protected List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> parseAllJsonLogFilesWithRetry() throws IOException {
+        int maxRetries = isRunningInCI() ? 3 : 1;
+        IOException lastException = null;
+
+        for (int retry = 0; retry < maxRetries; retry++) {
+            try {
+                List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> entries = parseAllJsonLogFiles(retry, maxRetries);
+                if (entries != null)
+                    return entries;
+
+            } catch (IOException e) {
+                lastException = e;
+                LOGGER.warn("Failed to parse JSON log files (attempt {}/{}): {}", retry + 1, maxRetries, e.getMessage());
+                if (retry < maxRetries - 1) {
+                    try {
+                        Thread.sleep(2000);
+                    } catch (InterruptedException ie) {
+                        Thread.currentThread().interrupt();
+                        throw new IOException("Interrupted during retry", ie);
+                    }
+                }
+            }
+        }
+
+        throw new IOException("Failed to parse JSON log files after " + maxRetries + " attempts", lastException);
+    }
+
+    private List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> parseAllJsonLogFiles(int retry, int maxRetries) throws IOException {
+        List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> entries = parseAllJsonLogFiles();
+
+        if (entries.isEmpty() && retry < maxRetries - 1) {
+            LOGGER.warn("No JSON log entries found in any files, retrying... (attempt {}/{})", retry + 1, maxRetries);
+            try {
+                Thread.sleep(2000);

Review Comment:
   Same here



##########
quarkus/extensions/kogito-quarkus-serverless-workflow-jdbc-token-persistence-extension/kogito-quarkus-serverless-workflow-jdbc-token-persistence-integration-test/src/test/java/org/kie/kogito/quarkus/token/persistence/workflows/TokenExchangeIT.java:
##########
@@ -116,37 +119,58 @@ private void validateCachingBehavior() {
     }
 
     /**
-     * Get the path to the Quarkus log file
+     * Validate OAuth2 token exchange and caching behavior from JSON log files
      */
-    private Path getQuarkusLogFile() {
-        // The log file path is configured in application.properties as quarkus.log.file.path
-        // For integration tests, Quarkus uses target/quarkus.log
-        String logPath = System.getProperty("quarkus.log.file.path", "target/quarkus.log");
-        return Paths.get(logPath);
-    }
-
-    /**
-     * Validate OAuth2 token exchange and caching behavior from log file
-     */
-    private void validateOAuth2LogsFromFile(Path logFile) throws IOException {
-        List<String> logLines = Files.readAllLines(logFile);
-        LOGGER.info("Analyzing {} log lines from {} for OAuth2 token exchange patterns", logLines.size(), logFile);
-
-        Assertions.assertThat(logLines).hasSizeGreaterThan(0);
-
-        List<String> usedJDBCRepository = logLines.stream().filter(line -> line.contains(LOG_PREFIX_USED_REPOSITORY + ": JdbcTokenCacheRepository")).toList();
-        List<String> usedInMemoryRepository = logLines.stream().filter(line -> line.contains(LOG_PREFIX_USED_REPOSITORY + ": InMemoryTokenCacheRepository")).toList();
+    private void validateOAuth2LogsFromFile(String processInstanceId) throws IOException {
+        // Parse all JSON log files to handle rotation
+        List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> allEntries = parseAllJsonLogFilesWithRetry();
+
+        Assertions.assertThat(allEntries).hasSizeGreaterThan(0);
+
+        LOGGER.info("Analyzing {} JSON log entries for OAuth2 token exchange patterns for process instance {}",
+                allEntries.size(), processInstanceId);
+
+        // Filter logs to only include those related to this process instance or general context
+        // This prevents interference from concurrent tests
+        List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> processSpecificEntries = allEntries.stream()
+                .filter(entry -> processInstanceId.equals(entry.getProcessInstanceId()) ||
+                        entry.getProcessInstanceId() == null ||
+                        entry.getProcessInstanceId().isEmpty())
+                .toList();
+
+        LOGGER.info("Found {} JSON log entries specific to process instance {} or general context",
+                processSpecificEntries.size(), processInstanceId);
+
+        // Check repository initialization logs in all entries (not just process-specific)
+        // Repository initialization might be logged before test starts, so we check but don't fail
+        List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> usedJDBCRepository = allEntries.stream()
+                .filter(entry -> entry.message.contains(LOG_PREFIX_USED_REPOSITORY + ": JdbcTokenCacheRepository"))
+                .toList();
+        List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> usedInMemoryRepository = allEntries.stream()
+                .filter(entry -> entry.message.contains(LOG_PREFIX_USED_REPOSITORY + ": InMemoryTokenCacheRepository"))
+                .toList();
         Assertions.assertThat(usedJDBCRepository).hasSize(1);
         Assertions.assertThat(usedInMemoryRepository).hasSize(0);
 
-        LOGGER.info("JDBC repository was used as expected");
-
-        List<String> startTokenExchangeLogLines = logLines.stream().filter(line -> line.contains(LOG_PREFIX_STARTING_TOKEN_EXCHANGE)).toList();
-        List<String> completedTokenExchangeLogLines = logLines.stream().filter(line -> line.contains(LOG_PREFIX_COMPLETED_TOKEN_EXCHANGE)).toList();
-        List<String> failedTokenExchangeLogLines = logLines.stream().filter(line -> line.contains(LOG_PREFIX_FAILED_TOKEN_EXCHANGE)).toList();
-        List<String> refreshTokenExchangeLogLines = logLines.stream().filter(line -> line.contains(LOG_PREFIX_TOKEN_REFRESH)).toList();
-        List<String> completedRefreshTokenExchangeLogLines = logLines.stream().filter(line -> line.contains(LOG_PREFIX_REFRESH_COMPLETED)).toList();
-        List<String> failedRefreshTokenExchangeLogLines = logLines.stream().filter(line -> line.contains(LOG_PREFIX_FAILED_TO_REFRESH_TOKEN)).toList();
+        // Filter token exchange logs to only those related to this process instance
+        List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> startTokenExchangeLogLines = processSpecificEntries.stream()
+                .filter(entry -> entry.message.contains(LOG_PREFIX_STARTING_TOKEN_EXCHANGE))
+                .toList();
+        List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> completedTokenExchangeLogLines = processSpecificEntries.stream()
+                .filter(entry -> entry.message.contains(LOG_PREFIX_COMPLETED_TOKEN_EXCHANGE))
+                .toList();
+        List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> failedTokenExchangeLogLines = processSpecificEntries.stream()
+                .filter(entry -> entry.message.contains(LOG_PREFIX_FAILED_TOKEN_EXCHANGE))
+                .toList();
+        List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> refreshTokenExchangeLogLines = processSpecificEntries.stream()
+                .filter(entry -> entry.message.contains(LOG_PREFIX_TOKEN_REFRESH) && processInstanceId.equals(entry.getProcessInstanceId()))
+                .toList();
+        List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> completedRefreshTokenExchangeLogLines = processSpecificEntries.stream()
+                .filter(entry -> entry.message.contains(LOG_PREFIX_REFRESH_COMPLETED) && processInstanceId.equals(entry.getProcessInstanceId()))
+                .toList();
+        List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> failedRefreshTokenExchangeLogLines = processSpecificEntries.stream()
+                .filter(entry -> entry.message.contains(LOG_PREFIX_FAILED_TO_REFRESH_TOKEN) && processInstanceId.equals(entry.getProcessInstanceId()))
+                .toList();

Review Comment:
   Each stream().filter call iterates over all the entries. This is repeated 6 times.
   Why don't you use only a single pass over the list and classify entries to use it later?
   
   We could have a map with an entry for each status ("start", "completed", ..) and then iterate just once, , adding each log entry to the appropriate list in the map. 
   
   This reduces complexity, makes the code more efficient for large logs, with easier maintenance, wdyt?



##########
kogito-test-utils/src/main/java/org/kie/kogito/test/utils/ProcessInstanceLoggingTestBase.java:
##########
@@ -0,0 +1,244 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.kie.kogito.test.utils;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.time.Duration;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import io.restassured.http.ContentType;
+
+import static io.restassured.RestAssured.given;
+import static org.awaitility.Awaitility.await;
+
+/**
+ * Base class for process instance logging tests providing common functionality.
+ * This class eliminates code duplication between different logging test implementations.
+ */
+public abstract class ProcessInstanceLoggingTestBase {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(ProcessInstanceLoggingTestBase.class);
+
+    /**
+     * Get the configured log file path.
+     *
+     * @return Path to the Quarkus log file
+     */
+    protected Path getLogFilePath() {
+        String logPath = System.getProperty("quarkus.log.file.path", "target/quarkus.log");
+        return Paths.get(logPath);
+    }
+
+    /**
+     * Get all log files including rotated ones in chronological order (newest first).
+     * Handles Quarkus default rotation: quarkus.log, quarkus.log.1, quarkus.log.2, etc.
+     *
+     * @return List of log file paths sorted by modification time (newest first)
+     * @throws IOException if directory access fails
+     */
+    protected List<Path> getAllLogFiles() throws IOException {
+        Path logFile = getLogFilePath();
+        Path logDir = logFile.getParent();
+        String baseName = logFile.getFileName().toString();
+
+        List<Path> logFiles = new ArrayList<>();
+
+        // Add main log file if it exists
+        if (Files.exists(logFile)) {
+            logFiles.add(logFile);
+        }
+
+        // Look for rotated files: baseName.1, baseName.2, etc.
+        for (int i = 1; i <= 10; i++) { // Check up to 10 rotated files (more than default max-backup-index=5)

Review Comment:
   Can this be defined as a constant?



##########
quarkus/extensions/kogito-quarkus-serverless-workflow-otel-extension/kogito-quarkus-serverless-workflow-otel-deployment/src/test/java/org/kie/kogito/quarkus/serverless/workflow/otel/deployment/SonataFlowOtelExtensionStructureTest.java:
##########
@@ -16,21 +16,18 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.kie.kogito.addons.jwt.deployment;
+package org.kie.kogito.quarkus.serverless.workflow.otel.deployment;
 
-import io.quarkus.deployment.annotations.BuildStep;
-import io.quarkus.deployment.builditem.FeatureBuildItem;
+import org.junit.jupiter.api.Test;
 
-/**
- * Quarkus deployment processor for JWT parser functionality
- * The JWT parser work item handlers are discovered via ServiceLoader and don't require CDI bean registration
- */
-public class JwtParserProcessor {
+import static org.junit.jupiter.api.Assertions.assertNotNull;
 
-    private static final String FEATURE = "sonataflow-addons-jwt-parser";
+public class SonataFlowOtelExtensionStructureTest {
 
-    @BuildStep
-    FeatureBuildItem feature() {
-        return new FeatureBuildItem(FEATURE);
+    @Test
+    public void shouldLoadProcessorClass() {
+        SonataFlowOtelProcessor processor = new SonataFlowOtelProcessor();
+        assertNotNull(processor);

Review Comment:
   It can be also use assertAll for reporting multiple assertions together, but up to you



##########
kogito-test-utils/src/main/java/org/kie/kogito/test/utils/JsonProcessInstanceLogAnalyzer.java:
##########
@@ -0,0 +1,559 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.kie.kogito.test.utils;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.time.format.DateTimeParseException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.fail;
+
+/**
+ * Utility class for analyzing process instance aware logging in JSON format.
+ * Supports parsing JSON log format with MDC fields including processInstanceId.
+ * This class replaces pipe-delimited format parsing for machine-consumable JSON logs.
+ */
+public class JsonProcessInstanceLogAnalyzer {
+
+    private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
+
+    // Common timestamp patterns in JSON logs
+    private static final DateTimeFormatter[] TIMESTAMP_FORMATTERS = {
+            DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"),
+            DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSX"),
+            DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS"),
+            DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"),
+            DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss,SSS"),
+            DateTimeFormatter.ISO_LOCAL_DATE_TIME
+    };
+
+    /**
+     * Represents a single JSON log entry with all its components.
+     */
+    public static class JsonLogEntry {
+        public final LocalDateTime timestamp;
+        public final String level;
+        public final String loggerName;
+        public final String message;
+        public final Map<String, String> mdc;
+        public final String threadName;
+        public final String sequenceNumber;
+        public final JsonNode rawJson;
+
+        public JsonLogEntry(LocalDateTime timestamp, String level, String loggerName,
+                String message, Map<String, String> mdc, String threadName,
+                String sequenceNumber, JsonNode rawJson) {
+            this.timestamp = timestamp;
+            this.level = level != null ? level : "INFO";
+            this.loggerName = loggerName != null ? loggerName : "unknown.logger";
+            this.message = message != null ? message : "";
+            this.mdc = mdc != null ? new HashMap<>(mdc) : new HashMap<>();
+            this.threadName = threadName;
+            this.sequenceNumber = sequenceNumber;
+            this.rawJson = rawJson;
+        }
+
+        /**
+         * Get the process instance ID from MDC.
+         */
+        public String getProcessInstanceId() {
+            return mdc.get("processInstanceId");
+        }
+
+        /**
+         * Check if this log entry has a process instance ID.
+         */
+        public boolean hasProcessInstance() {
+            String processInstanceId = getProcessInstanceId();
+            return processInstanceId != null && !processInstanceId.trim().isEmpty();
+        }
+
+        /**
+         * Check if this log entry is general context (no process instance ID).
+         */
+        public boolean isGeneralContext() {
+            return !hasProcessInstance();
+        }
+
+        /**
+         * Get trace ID from MDC if available.
+         */
+        public String getTraceId() {
+            return mdc.get("traceId");
+        }
+
+        /**
+         * Get span ID from MDC if available.
+         */
+        public String getSpanId() {
+            return mdc.get("spanId");
+        }
+
+        @Override
+        public String toString() {
+            return String.format("JsonLogEntry{timestamp=%s, level=%s, processInstanceId=%s, logger=%s, message=%s}",
+                    timestamp, level, getProcessInstanceId(), loggerName, message);
+        }
+    }
+
+    /**
+     * Statistics about JSON log entries for analysis.
+     */
+    public static class JsonLogStatistics {
+        public final long totalLogs;
+        public final long processSpecificLogs;
+        public final long generalContextLogs;
+        public final Map<String, Long> logsByProcessInstance;
+        public final Map<String, Long> logsByLevel;
+        public final Map<String, Long> logsByLogger;
+        public final long logsWithTracing;
+
+        public JsonLogStatistics(List<JsonLogEntry> entries) {
+            this.totalLogs = entries.size();
+            this.processSpecificLogs = entries.stream().filter(JsonLogEntry::hasProcessInstance).count();
+            this.generalContextLogs = entries.stream().filter(JsonLogEntry::isGeneralContext).count();
+            this.logsByProcessInstance = entries.stream()
+                    .collect(Collectors.groupingBy(
+                            entry -> entry.hasProcessInstance() ? entry.getProcessInstanceId() : "",
+                            Collectors.counting()));
+            this.logsByLevel = entries.stream()
+                    .collect(Collectors.groupingBy(entry -> entry.level, Collectors.counting()));
+            this.logsByLogger = entries.stream()
+                    .collect(Collectors.groupingBy(entry -> entry.loggerName, Collectors.counting()));
+            this.logsWithTracing = entries.stream()
+                    .filter(entry -> entry.getTraceId() != null)
+                    .count();
+        }
+
+        @Override
+        public String toString() {
+            return String.format(
+                    "JsonLogStatistics{total=%d, processSpecific=%d, general=%d, byProcess=%s, byLevel=%s, withTracing=%d}",
+                    totalLogs, processSpecificLogs, generalContextLogs, logsByProcessInstance, logsByLevel, logsWithTracing);
+        }
+    }
+
+    /**
+     * Parse JSON log file with multiline support and resilient error handling.
+     */
+    public static List<JsonLogEntry> parseJsonLogFile(Path logFile) throws IOException {
+        List<String> lines = Files.readAllLines(logFile);
+        List<JsonLogEntry> entries = new ArrayList<>();
+        AtomicInteger malformedLineCount = new AtomicInteger(0);
+        AtomicInteger lineNumber = new AtomicInteger(0);
+
+        for (String line : lines) {
+            lineNumber.incrementAndGet();
+
+            if (line.trim().isEmpty()) {
+                continue; // Skip empty lines
+            }
+
+            try {
+                JsonLogEntry entry = parseJsonLogLine(line, malformedLineCount, lineNumber.get());
+                if (entry != null) {
+                    entries.add(entry);
+                }
+            } catch (Exception e) {
+                malformedLineCount.incrementAndGet();
+                System.err.printf("Warning: Failed to parse JSON log line %d: %s - Error: %s%n",
+                        lineNumber.get(), line.substring(0, Math.min(100, line.length())), e.getMessage());
+            }
+        }
+
+        // Log statistics about parsing
+        if (malformedLineCount.get() > 0) {
+            System.err.printf("Warning: Encountered %d malformed/problematic lines out of %d total lines while parsing %s%n",

Review Comment:
   Why don't you define a Logger instead of using  the standard error stream `System.err`?
   There are more occurrences of this in the class.



##########
quarkus/extensions/kogito-quarkus-serverless-workflow-otel-extension/kogito-quarkus-serverless-workflow-otel/src/main/java/org/kie/kogito/quarkus/serverless/workflow/otel/NodeSpanManager.java:
##########
@@ -0,0 +1,235 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.kie.kogito.quarkus.serverless.workflow.otel;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.kie.kogito.quarkus.serverless.workflow.otel.config.SonataFlowOtelConfig;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import io.opentelemetry.api.common.Attributes;
+import io.opentelemetry.api.trace.Span;
+import io.opentelemetry.api.trace.SpanKind;
+import io.opentelemetry.api.trace.StatusCode;
+import io.opentelemetry.api.trace.Tracer;
+import io.opentelemetry.context.Context;
+import io.opentelemetry.context.Scope;
+
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.inject.Inject;
+
+import static org.kie.kogito.quarkus.serverless.workflow.otel.SonataFlowOtelAttributes.EVENT_DESCRIPTION;
+import static org.kie.kogito.quarkus.serverless.workflow.otel.SonataFlowOtelAttributes.RequestProperties;
+import static org.kie.kogito.quarkus.serverless.workflow.otel.SonataFlowOtelAttributes.SERVICE_NAME;
+import static org.kie.kogito.quarkus.serverless.workflow.otel.SonataFlowOtelAttributes.SERVICE_VERSION;
+import static org.kie.kogito.quarkus.serverless.workflow.otel.SonataFlowOtelAttributes.SONATAFLOW_PROCESS_ID;
+import static org.kie.kogito.quarkus.serverless.workflow.otel.SonataFlowOtelAttributes.SONATAFLOW_PROCESS_INSTANCE_ID;
+import static org.kie.kogito.quarkus.serverless.workflow.otel.SonataFlowOtelAttributes.SONATAFLOW_PROCESS_INSTANCE_NODE;
+import static org.kie.kogito.quarkus.serverless.workflow.otel.SonataFlowOtelAttributes.SONATAFLOW_PROCESS_INSTANCE_STATE;
+import static org.kie.kogito.quarkus.serverless.workflow.otel.SonataFlowOtelAttributes.SONATAFLOW_PROCESS_VERSION;
+import static org.kie.kogito.quarkus.serverless.workflow.otel.SonataFlowOtelAttributes.SONATAFLOW_TRANSACTION_ID;
+import static org.kie.kogito.quarkus.serverless.workflow.otel.SonataFlowOtelAttributes.SpanNames;
+import static org.kie.kogito.quarkus.serverless.workflow.otel.SonataFlowOtelAttributes.TrackerAttributes;
+
+@ApplicationScoped
+public class NodeSpanManager {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(NodeSpanManager.class);
+    private final Tracer tracer;
+    private final SonataFlowOtelConfig config;
+    private final Map<String, Span> activeNodeSpans = new ConcurrentHashMap<>();
+    private final Map<String, Scope> activeNodeScopes = new ConcurrentHashMap<>();
+    private final Map<String, Span> lastActiveNodeSpan = new ConcurrentHashMap<>();
+
+    @Inject
+    public NodeSpanManager(Tracer tracer, SonataFlowOtelConfig config) {
+        this.tracer = tracer;
+        this.config = config;
+    }
+
+    public Span createNodeSpan(String processInstanceId, String processId, String processVersion, String processState, String nodeId) {
+        if (!config.enabled() || !config.spans().enabled()) {
+            return null;
+        }
+
+        String spanName = SpanNames.createProcessSpanName(processId);
+
+        Span span = tracer.spanBuilder(spanName)
+                .setParent(Context.current()) // Use current context for trace propagation
+                .setSpanKind(SpanKind.INTERNAL)
+                .setAttribute(SONATAFLOW_PROCESS_INSTANCE_ID, processInstanceId)
+                .setAttribute(SONATAFLOW_PROCESS_ID, processId)
+                .setAttribute(SONATAFLOW_PROCESS_VERSION, processVersion)
+                .setAttribute(SONATAFLOW_PROCESS_INSTANCE_STATE, processState)
+                .setAttribute(SERVICE_NAME, config.serviceName())
+                .setAttribute(SERVICE_VERSION, config.serviceVersion())
+                .setAttribute(SONATAFLOW_PROCESS_INSTANCE_NODE, nodeId)
+                .startSpan();
+
+        String spanKey = processInstanceId + ":" + nodeId;
+        Scope scope = span.makeCurrent();
+        activeNodeSpans.put(spanKey, span);
+        activeNodeScopes.put(spanKey, scope);

Review Comment:
   There's a possible leak here: `scope` is stored in `activeNodeScopes` to be closed later.
   If anything goes wrong before `completeNodeSpan` or `endRemainingSpans` are called, then that scope remains open, and it's not closed ever. Have you consider it?
   
   



##########
kogito-test-utils/src/main/java/org/kie/kogito/test/utils/ProcessInstanceLoggingTestBase.java:
##########
@@ -0,0 +1,244 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.kie.kogito.test.utils;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.time.Duration;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import io.restassured.http.ContentType;
+
+import static io.restassured.RestAssured.given;
+import static org.awaitility.Awaitility.await;
+
+/**
+ * Base class for process instance logging tests providing common functionality.
+ * This class eliminates code duplication between different logging test implementations.
+ */
+public abstract class ProcessInstanceLoggingTestBase {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(ProcessInstanceLoggingTestBase.class);
+
+    /**
+     * Get the configured log file path.
+     *
+     * @return Path to the Quarkus log file
+     */
+    protected Path getLogFilePath() {
+        String logPath = System.getProperty("quarkus.log.file.path", "target/quarkus.log");
+        return Paths.get(logPath);
+    }
+
+    /**
+     * Get all log files including rotated ones in chronological order (newest first).
+     * Handles Quarkus default rotation: quarkus.log, quarkus.log.1, quarkus.log.2, etc.
+     *
+     * @return List of log file paths sorted by modification time (newest first)
+     * @throws IOException if directory access fails
+     */
+    protected List<Path> getAllLogFiles() throws IOException {
+        Path logFile = getLogFilePath();
+        Path logDir = logFile.getParent();
+        String baseName = logFile.getFileName().toString();
+
+        List<Path> logFiles = new ArrayList<>();
+
+        // Add main log file if it exists
+        if (Files.exists(logFile)) {
+            logFiles.add(logFile);
+        }
+
+        // Look for rotated files: baseName.1, baseName.2, etc.
+        for (int i = 1; i <= 10; i++) { // Check up to 10 rotated files (more than default max-backup-index=5)
+            Path rotatedFile = logDir.resolve(baseName + "." + i);
+            if (Files.exists(rotatedFile)) {
+                logFiles.add(rotatedFile);
+            }
+        }
+
+        // Sort by last modified time (newest first) to ensure we read logs in chronological order
+        logFiles.sort((p1, p2) -> {
+            try {
+                return Files.getLastModifiedTime(p2).compareTo(Files.getLastModifiedTime(p1));
+            } catch (IOException e) {
+                return 0; // Keep original order if we can't compare
+            }
+        });
+
+        LOGGER.debug("Found {} log files: {}", logFiles.size(), logFiles);
+        return logFiles;
+    }
+
+    /**
+     * Clear a specific log file to start with a clean slate.
+     *
+     * Warning: If your test uses getAllLogFiles() or parseAllLogFiles() methods later,
+     * consider using clearAllLogFiles() instead to avoid inconsistent results from
+     * rotated log files.
+     *
+     * @param logFile Path to the log file
+     * @throws IOException if file operations fail
+     */
+    protected void clearLogFile(Path logFile) throws IOException {
+        if (Files.exists(logFile)) {
+            Files.write(logFile, new byte[0]);
+        }
+    }
+
+    /**
+     * Clear all log files including rotated ones to start with a clean slate.
+     * This ensures we don't have stale logs from previous test runs affecting current test.
+     *
+     * This is the recommended method for test setup when using getAllLogFiles() or
+     * parseAllLogFiles() methods to ensure consistent results.
+     *
+     * @throws IOException if file operations fail
+     */
+    protected void clearAllLogFiles() throws IOException {
+        try {
+            List<Path> logFiles = getAllLogFiles();
+            for (Path logFile : logFiles) {
+                if (Files.exists(logFile)) {
+                    Files.write(logFile, new byte[0]);
+                    LOGGER.debug("Cleared log file: {}", logFile);
+                }
+            }
+            LOGGER.info("Cleared {} log files", logFiles.size());
+        } catch (IOException e) {
+            LOGGER.warn("Failed to clear some log files: {}", e.getMessage());
+            // Don't fail the test, just warn
+        }
+    }
+
+    /**
+     * Wait for logs to be flushed to disk.
+     *
+     * @throws InterruptedException if thread is interrupted
+     */
+    protected void waitForLogFlush() throws InterruptedException {
+        // Increase default wait time for CI environments
+        long waitTime = isRunningInCI() ? 3000 : 1000;
+        Thread.sleep(waitTime);
+    }
+
+    /**
+     * Wait for logs to be flushed to disk with custom duration.
+     *
+     * @param millis milliseconds to wait
+     * @throws InterruptedException if thread is interrupted
+     */
+    protected void waitForLogFlush(long millis) throws InterruptedException {
+        // In CI environments, use at least the provided time or 2 seconds, whichever is higher
+        long actualWaitTime = isRunningInCI() ? Math.max(millis, 2000) : millis;
+        Thread.sleep(actualWaitTime);
+    }
+
+    /**
+     * Detect if running in CI environment based on common CI environment variables.
+     * 
+     * @return true if running in CI, false otherwise
+     */
+    protected boolean isRunningInCI() {
+        return System.getenv("CI") != null ||
+                System.getenv("JENKINS_URL") != null ||
+                System.getenv("GITHUB_ACTIONS") != null ||
+                System.getenv("TRAVIS") != null ||
+                System.getenv("CIRCLECI") != null ||
+                System.getProperty("ci.environment") != null;
+    }
+
+    /**
+     * Wait for workflow completion using polling.
+     *
+     * @param workflowPath REST path for the workflow
+     * @param processInstanceId Process instance ID
+     * @param timeout Maximum time to wait
+     */
+    protected void waitForWorkflowCompletion(String workflowPath, String processInstanceId, Duration timeout) {

Review Comment:
   This could also return boolean to indicate whether workflow completed or timed out. It would be useful for conditional assertions in tests, wdyt?



##########
quarkus/extensions/kogito-quarkus-serverless-workflow-otel-extension/kogito-quarkus-serverless-workflow-otel/src/main/java/org/kie/kogito/quarkus/serverless/workflow/otel/NodeOtelEventListener.java:
##########
@@ -0,0 +1,310 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.kie.kogito.quarkus.serverless.workflow.otel;
+
+import java.util.Date;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.kie.api.event.process.ProcessCompletedEvent;
+import org.kie.api.event.process.ProcessNodeLeftEvent;
+import org.kie.api.event.process.ProcessNodeTriggeredEvent;
+import org.kie.api.event.process.ProcessStartedEvent;
+import org.kie.kogito.internal.process.event.DefaultKogitoProcessEventListener;
+import org.kie.kogito.internal.process.runtime.KogitoNodeInstance;
+import org.kie.kogito.internal.process.runtime.KogitoProcessInstance;
+import org.kie.kogito.process.ProcessInstance;
+import org.kie.kogito.quarkus.serverless.workflow.otel.config.SonataFlowOtelConfig;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import io.opentelemetry.api.trace.Span;
+
+import static org.kie.kogito.quarkus.serverless.workflow.otel.SonataFlowOtelAttributes.EventDescriptions;
+import static org.kie.kogito.quarkus.serverless.workflow.otel.SonataFlowOtelAttributes.Events;
+import static org.kie.kogito.quarkus.serverless.workflow.otel.SonataFlowOtelAttributes.NodePatterns;
+import static org.kie.kogito.quarkus.serverless.workflow.otel.SonataFlowOtelAttributes.ProcessStates;
+
+public class NodeOtelEventListener extends DefaultKogitoProcessEventListener {
+
+    record NodeProcessDetails(String processInstanceId, String processId, String processVersion, String processState, String nodeId) {
+    }
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(NodeOtelEventListener.class);
+
+    private final NodeSpanManager spanManager;
+    private final SonataFlowOtelConfig config;
+    private final ProcessEventHandler processEventHandler;
+    private final HeaderContextExtractor headerExtractor;
+    private final Set<String> processedErrors = ConcurrentHashMap.newKeySet();
+
+    public NodeOtelEventListener(NodeSpanManager spanManager, SonataFlowOtelConfig config, HeaderContextExtractor headerExtractor) {
+        this.spanManager = spanManager;
+        this.config = config;
+        this.headerExtractor = headerExtractor;
+        this.processEventHandler = new ProcessEventHandler(spanManager, config);
+        LOGGER.debug("NodeOtelEventListener initialized");
+    }
+
+    @Override
+    public void afterProcessStarted(ProcessStartedEvent event) {
+        LOGGER.debug("Process started event received - start event will be added in beforeNodeTriggered");
+    }
+
+    @Override
+    public void beforeNodeTriggered(ProcessNodeTriggeredEvent event) {
+        try {
+            NodeProcessDetails details = extractNodeAndProcessDetails(event);
+
+            if (isInternalNode(details.nodeId())) {
+                LOGGER.trace("Skipping internal node: {}", details.nodeId());
+                return;
+            }
+
+            LOGGER.debug("Node triggered: {} for process instance {} (process: {})",
+                    details.nodeId(), details.processInstanceId(), details.processId());
+
+            Map<String, String> extractedContext = OtelContextHolder.getExtractedContext();
+            if (extractedContext.isEmpty()) {
+                extractedContext = handleContextReestablishment(
+                        (KogitoProcessInstance) event.getProcessInstance(), details.processInstanceId());
+            }
+
+            createAndConfigureNodeSpan(details.processInstanceId(), details.processId(),
+                    details.processVersion(), details.processState(), details.nodeId(), extractedContext);
+
+        } catch (Exception e) {
+            LOGGER.error("Error in beforeNodeTriggered: {}", e.getMessage(), e);
+        }
+    }
+
+    private NodeProcessDetails extractNodeAndProcessDetails(ProcessNodeTriggeredEvent event) {
+        KogitoNodeInstance nodeInstance = (KogitoNodeInstance) event.getNodeInstance();
+        KogitoProcessInstance processInstance = (KogitoProcessInstance) event.getProcessInstance();
+
+        String processInstanceId = processInstance.getId();
+        String processId = processInstance.getProcessId();
+        String processVersion = processInstance.getProcessVersion();
+        String processState = getProcessState(processInstance.getState());
+        String nodeId = nodeInstance.getNodeName();
+
+        return new NodeProcessDetails(processInstanceId, processId, processVersion, processState, nodeId);
+    }
+
+    private Map<String, String> handleContextReestablishment(KogitoProcessInstance processInstance, String processInstanceId) {
+        try {
+            Map<String, java.util.List<String>> processHeaders = processInstance.getHeaders();
+            if (processHeaders != null && !processHeaders.isEmpty()) {
+                Map<String, String> headerContext = headerExtractor.extractFromProcessHeaders(processHeaders);
+                if (!headerContext.isEmpty()) {
+                    populateMDCFromContext(headerContext);
+                    LOGGER.debug("Re-established context from process headers for process instance {}: {}",
+                            processInstanceId, headerContext.keySet());
+                    return headerContext;
+                }
+            }
+        } catch (Exception e) {
+            LOGGER.debug("Failed to extract context from process headers: {}", e.getMessage());
+        }
+        return Map.of();
+    }
+
+    private void createAndConfigureNodeSpan(String processInstanceId, String processId, String processVersion, String processState, String nodeId, Map<String, String> extractedContext) {
+        Span span = spanManager.createNodeSpanWithContext(processInstanceId, processId, processVersion, processState, nodeId, extractedContext);
+
+        if (span != null) {

Review Comment:
   If span is null, it's silently skipped. You could add an "else" clause with a warning for tracking this situation



##########
quarkus/extensions/kogito-quarkus-serverless-workflow-otel-extension/kogito-quarkus-serverless-workflow-otel/src/main/java/org/kie/kogito/quarkus/serverless/workflow/otel/logging/OtelLogHandlerInitializer.java:
##########
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.kie.kogito.quarkus.serverless.workflow.otel.logging;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import io.quarkus.runtime.StartupEvent;
+
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.enterprise.event.Observes;
+
+@ApplicationScoped
+public class OtelLogHandlerInitializer {
+
+    private static final OtelLogHandler handler = new OtelLogHandler();
+
+    void onStart(@Observes StartupEvent ev) {

Review Comment:
   It could be also added a check to ensure the handler isn’t already added, to prevent accidental double registration, but  up to you



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "kie-ci3 (via GitHub)" <gi...@apache.org>.
kie-ci3 commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3678216195

   
   **PR job** `#39` was: **UNSTABLE**
   Possible explanation: This should be test failures
   
   
   <details>
   <summary><b>Reproducer</b></summary>
   
   
   
   build-chain build full_downstream  -f 'https://raw.githubusercontent.com/${AUTHOR:apache}/incubator-kie-kogito-pipelines/${BRANCH:main}/.ci/buildchain-config-pr-cdb.yaml' -o 'bc' -p apache/incubator-kie-kogito-runtimes -u https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094 --skipParallelCheckout
   
   NOTE: To install the build-chain tool, please refer to https://github.com/kiegroup/github-action-build-chain#local-execution
   
   </details>
   
   
   Please look here: https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/39/display/redirect
   
   **Test results:**
   - PASSED: 3809
   - FAILED: 4
   
   Those are the test failures: 
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/39/testReport/org.kie.kogito.addons.jwt.it/JwtParserIT/testJwtParserWorkflowEndToEnd/">org.kie.kogito.addons.jwt.it.JwtParserIT.testJwtParserWorkflowEndToEnd</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/39/testReport/org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it/KnativeServingAddonIT/___/">org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it.KnativeServingAddonIT.(?)</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/39/testReport/org.kie.kogito.addons.quarkus.kubernetes/ConfigValueExpanderIT/test/">org.kie.kogito.addons.quarkus.kubernetes.ConfigValueExpanderIT.test</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/39/testReport/org.kie.kogito.quarkus.token.persistence.workflows/TokenExchangeIT/tokenExchange/">org.kie.kogito.quarkus.token.persistence.workflows.TokenExchangeIT.tokenExchange</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gabriel-farache (via GitHub)" <gi...@apache.org>.
gabriel-farache commented on code in PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#discussion_r2581679952


##########
quarkus/extensions/kogito-quarkus-serverless-workflow-otel-extension/kogito-quarkus-serverless-workflow-otel-deployment/src/test/java/org/kie/kogito/quarkus/serverless/workflow/otel/deployment/SonataFlowOtelExtensionStructureTest.java:
##########
@@ -16,21 +16,18 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.kie.kogito.addons.jwt.deployment;
+package org.kie.kogito.quarkus.serverless.workflow.otel.deployment;
 
-import io.quarkus.deployment.annotations.BuildStep;
-import io.quarkus.deployment.builditem.FeatureBuildItem;
+import org.junit.jupiter.api.Test;
 
-/**
- * Quarkus deployment processor for JWT parser functionality
- * The JWT parser work item handlers are discovered via ServiceLoader and don't require CDI bean registration
- */
-public class JwtParserProcessor {
+import static org.junit.jupiter.api.Assertions.assertNotNull;
 
-    private static final String FEATURE = "sonataflow-addons-jwt-parser";
+public class SonataFlowOtelExtensionStructureTest {
 
-    @BuildStep
-    FeatureBuildItem feature() {
-        return new FeatureBuildItem(FEATURE);
+    @Test
+    public void shouldLoadProcessorClass() {
+        SonataFlowOtelProcessor processor = new SonataFlowOtelProcessor();
+        assertNotNull(processor);

Review Comment:
   sure why not



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "wmedvede (via GitHub)" <gi...@apache.org>.
wmedvede commented on code in PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#discussion_r2588395427


##########
jbpm/jbpm-flow/src/main/java/org/kie/kogito/process/impl/AbstractProcessInstance.java:
##########
@@ -225,9 +226,35 @@ protected void reconnect() {
         }
         getProcessRuntime().getProcessInstanceManager().setLock(((MutableProcessInstances<T>) process.instances()).lock());
         processInstance.setMetaData(KOGITO_PROCESS_INSTANCE, this);
+
+        restoreProcessInstanceContext();
+
         processInstance.reconnect();
     }
 
+    private void restoreProcessInstanceContext() {
+        Map<String, List<String>> headers = processInstance.getHeaders();
+        if (headers != null && !headers.isEmpty()) {
+            Map<String, String> contextMap = convertHeadersToContextMap(headers);
+            if (!contextMap.isEmpty()) {
+                org.kie.kogito.services.context.ProcessInstanceContext.setContextFromAsync(contextMap);

Review Comment:
   So, even when every request is served in a different thread, we don't govern how many methods was invocked during the request serving.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "kie-ci3 (via GitHub)" <gi...@apache.org>.
kie-ci3 commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3660625286

   
   **PR job** `#35` was: **UNSTABLE**
   Possible explanation: This should be test failures
   
   
   <details>
   <summary><b>Reproducer</b></summary>
   
   
   
   build-chain build full_downstream  -f 'https://raw.githubusercontent.com/${AUTHOR:apache}/incubator-kie-kogito-pipelines/${BRANCH:main}/.ci/buildchain-config-pr-cdb.yaml' -o 'bc' -p apache/incubator-kie-kogito-runtimes -u https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094 --skipParallelCheckout
   
   NOTE: To install the build-chain tool, please refer to https://github.com/kiegroup/github-action-build-chain#local-execution
   
   </details>
   
   
   Please look here: https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/35/display/redirect
   
   **Test results:**
   - PASSED: 3249
   - FAILED: 6
   
   Those are the test failures: 
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/35/testReport/org.kie.kogito.addons.jwt.it/JwtParserIT/testJwtParserWorkflowEndToEnd/">org.kie.kogito.addons.jwt.it.JwtParserIT.testJwtParserWorkflowEndToEnd</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/35/testReport/org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it/KnativeServingAddonIT/___/">org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it.KnativeServingAddonIT.(?)</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/35/testReport/org.kie.kogito.addons.quarkus.kubernetes/ConfigValueExpanderIT/test/">org.kie.kogito.addons.quarkus.kubernetes.ConfigValueExpanderIT.test</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/35/testReport/org.kie.kogito.quarkus.serverless.workflow.opentelemetry/OpenTelemetryProcessEventsIT/shouldAddProcessCompleteEventToLastNodeSpan/">org.kie.kogito.quarkus.serverless.workflow.opentelemetry.OpenTelemetryProcessEventsIT.shouldAddProcessCompleteEventToLastNodeSpan</a></summary>
   Assertion condition defined as a Lambda expression in org.kie.kogito.quarkus.serverless.workflow.opentelemetry.OpenTelemetryProcessEventsIT Event 'process.instance.complete' not found on span within 10 seconds.
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/35/testReport/org.kie.kogito.quarkus.serverless.workflow.opentelemetry/OpenTelemetryProcessEventsIT/shouldAddProcessStartEventToFirstNodeSpan/">org.kie.kogito.quarkus.serverless.workflow.opentelemetry.OpenTelemetryProcessEventsIT.shouldAddProcessStartEventToFirstNodeSpan</a></summary>
   Assertion condition defined as a Lambda expression in org.kie.kogito.quarkus.serverless.workflow.opentelemetry.OpenTelemetryProcessEventsIT Event 'process.instance.start' not found on span within 10 seconds.
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/35/testReport/org.kie.kogito.quarkus.token.persistence.workflows/TokenExchangeIT/tokenExchange/">org.kie.kogito.quarkus.token.persistence.workflows.TokenExchangeIT.tokenExchange</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "wmedvede (via GitHub)" <gi...@apache.org>.
wmedvede commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3660047607

   @wmedvede Regading the event atrributes it's not clear if some are "always" present, and if some are kind of optional.
   
   In the image below, I have for instance created a proces intance with 'X-TRANSACTION-ID:test-transaction-id_1234'
   
   In the events, we can see, e.g. 
   the node.create event (belongs to the process instance) that has no process.instanced.id nor the reference.id,
   does it make sense?
   
   <img width="1849" height="812" alt="01-events-attributes" src="https://github.com/user-attachments/assets/a1afe730-45a4-4afc-80e4-132b812be740" />
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gabriel-farache (via GitHub)" <gi...@apache.org>.
gabriel-farache commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3660674484

   @wmedvede I see what you mean, the doc is confusing: in https://sonataflow-docs-preview-pr-741.surge.sh/serverlessworkflow/latest/opentelemetry/otel-configuration.html#_opentelemetry_events 
   > SonataFlow automatically generates OpenTelemetry events for workflow lifecycle moments:
   
   Means that an event is generated automatically by the runtime at key steps of lifecycle of the process instance: when it starts and when it ends, and for those type of events, the attributes of the Table 4 will be set when applicable.
   
   I will update this part to make it more obvious and I will split the table in 2 (one for each lifecycle event) and I will explicitly wrote the event type name to avoid confusion
   
   overall, the events for 'log.message' event type/name should not contains the processInstanceId, it's expected. The process instance ID is already in the tags of the span 


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gabriel-farache (via GitHub)" <gi...@apache.org>.
gabriel-farache commented on code in PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#discussion_r2588640553


##########
jbpm/jbpm-flow/src/main/java/org/kie/kogito/process/impl/AbstractProcessInstance.java:
##########
@@ -225,9 +226,35 @@ protected void reconnect() {
         }
         getProcessRuntime().getProcessInstanceManager().setLock(((MutableProcessInstances<T>) process.instances()).lock());
         processInstance.setMetaData(KOGITO_PROCESS_INSTANCE, this);
+
+        restoreProcessInstanceContext();
+
         processInstance.reconnect();
     }
 
+    private void restoreProcessInstanceContext() {
+        Map<String, List<String>> headers = processInstance.getHeaders();
+        if (headers != null && !headers.isEmpty()) {
+            Map<String, String> contextMap = convertHeadersToContextMap(headers);
+            if (!contextMap.isEmpty()) {
+                org.kie.kogito.services.context.ProcessInstanceContext.setContextFromAsync(contextMap);

Review Comment:
   Actually maybe I just need to call `restoreExtensionKeys(contextMap);` in the `setContextFromAsync` method, it would lead to the same result as adding the MDC current context in the `contextMap`



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "kie-ci3 (via GitHub)" <gi...@apache.org>.
kie-ci3 commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3611957084

   
   **PR job** `#31` was: **UNSTABLE**
   Possible explanation: This should be test failures
   
   
   <details>
   <summary><b>Reproducer</b></summary>
   
   
   
   build-chain build full_downstream  -f 'https://raw.githubusercontent.com/${AUTHOR:apache}/incubator-kie-kogito-pipelines/${BRANCH:main}/.ci/buildchain-config-pr-cdb.yaml' -o 'bc' -p apache/incubator-kie-kogito-runtimes -u https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094 --skipParallelCheckout
   
   NOTE: To install the build-chain tool, please refer to https://github.com/kiegroup/github-action-build-chain#local-execution
   
   </details>
   
   
   Please look here: https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/31/display/redirect
   
   **Test results:**
   - PASSED: 3758
   - FAILED: 4
   
   Those are the test failures: 
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/31/testReport/org.kie.kogito.addons.jwt.it/JwtParserIT/testJwtParserWorkflowEndToEnd/">org.kie.kogito.addons.jwt.it.JwtParserIT.testJwtParserWorkflowEndToEnd</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/31/testReport/org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it/KnativeServingAddonIT/___/">org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it.KnativeServingAddonIT.(?)</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/31/testReport/org.kie.kogito.addons.quarkus.kubernetes/ConfigValueExpanderIT/test/">org.kie.kogito.addons.quarkus.kubernetes.ConfigValueExpanderIT.test</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/31/testReport/org.kie.kogito.quarkus.token.persistence.workflows/TokenExchangeIT/tokenExchange/">org.kie.kogito.quarkus.token.persistence.workflows.TokenExchangeIT.tokenExchange</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gabriel-farache (via GitHub)" <gi...@apache.org>.
gabriel-farache commented on code in PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#discussion_r2581474266


##########
api/kogito-services/src/main/java/org/kie/kogito/services/context/ProcessInstanceContext.java:
##########
@@ -0,0 +1,214 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.kie.kogito.services.context;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.MDC;
+
+/**
+ * Utility class for managing process instance context in logging operations.
+ * This class uses SLF4J's Mapped Diagnostic Context (MDC) to ensure process instance IDs
+ * are automatically included in log messages.
+ *
+ * When no process instance is available, an empty string is used as the default value
+ * to provide cleaner formatting and easier searching in log aggregation systems.
+ *
+ * Thread Safety: This class is thread-safe and properly manages context isolation
+ * between different threads using MDC's inherent ThreadLocal-based storage.
+ */
+public final class ProcessInstanceContext {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(ProcessInstanceContext.class);
+
+    private static final Map<String, ContextExtension> EXTENSIONS = new ConcurrentHashMap<>();
+
+    /**
+     * MDC key used to store the process instance ID.
+     * This key should be referenced in logging configurations.
+     */
+    public static final String MDC_PROCESS_INSTANCE_KEY = "processInstanceId";
+
+    /**
+     * Default value used when no process instance ID is available.
+     * Empty string for cleaner log formatting and easier searching.
+     */
+    public static final String GENERAL_CONTEXT = "";
+
+    // Private constructor to prevent instantiation
+    private ProcessInstanceContext() {
+        // Utility class
+    }
+
+    /**
+     * Sets the process instance ID for the current thread context.
+     * This method updates SLF4J MDC and only performs the update if the value changes.
+     *
+     * @param processInstanceId the process instance ID to set, or null to use general context
+     */
+    public static void setProcessInstanceId(String processInstanceId) {
+        String effectiveId = processInstanceId != null ? processInstanceId : GENERAL_CONTEXT;
+
+        // Only update MDC if the value is changing (optimization)
+        String currentId = MDC.get(MDC_PROCESS_INSTANCE_KEY);
+        if (!effectiveId.equals(currentId)) {
+            MDC.put(MDC_PROCESS_INSTANCE_KEY, effectiveId);
+        }
+    }
+
+    /**
+     * Gets the current process instance ID from MDC.
+     *
+     * @return the current process instance ID, or empty string if no context is set
+     */
+    public static String getProcessInstanceId() {
+        String id = MDC.get(MDC_PROCESS_INSTANCE_KEY);
+        return id != null ? id : GENERAL_CONTEXT;
+    }
+
+    /**
+     * Clears the process instance context for the current thread.
+     * This resets the MDC to the general context (empty string).
+     */
+    public static void clear() {
+        MDC.put(MDC_PROCESS_INSTANCE_KEY, GENERAL_CONTEXT);
+    }
+
+    /**
+     * Checks if a process instance context is currently set.
+     *
+     * @return true if a process instance context is set, false otherwise
+     */
+    public static boolean hasContext() {
+        String id = MDC.get(MDC_PROCESS_INSTANCE_KEY);
+        return id != null && !GENERAL_CONTEXT.equals(id);
+    }
+
+    /**
+     * Gets a copy of the current MDC context map for propagation to other threads.
+     * This is useful for async operations that need to maintain the same logging context.
+     *
+     * @return a copy of the current MDC context map, or null if no context is set
+     */
+    public static Map<String, String> copyContextForAsync() {
+        return MDC.getCopyOfContextMap();
+    }
+
+    /**
+     * Sets the MDC context map from a previously copied context.
+     * This is useful for async operations that need to restore logging context.
+     *
+     * @param contextMap the context map to restore, or null to reset to general context
+     */
+    public static void setContextFromAsync(Map<String, String> contextMap) {
+        if (contextMap != null) {
+            if (EXTENSIONS.isEmpty()) {
+                MDC.setContextMap(contextMap);
+            } else {
+                // Restore core context first
+                Map<String, String> coreContext = filterCoreKeys(contextMap);
+                MDC.setContextMap(coreContext);
+
+                // Then restore extension-specific keys
+                restoreExtensionKeys(contextMap);
+            }
+        } else {
+            MDC.clear();
+            MDC.put(MDC_PROCESS_INSTANCE_KEY, GENERAL_CONTEXT);
+        }
+    }
+
+    /**
+     * Registers a context extension that will participate in context preservation.
+     *
+     * @param prefix the MDC key prefix this extension manages
+     * @param extension the extension to register
+     * @throws IllegalArgumentException if prefix or extension is null/empty
+     */
+    public static void registerExtension(String prefix, ContextExtension extension) {

Review Comment:
   good idea, I did use `otel.` as prefix but it's better to enforce it at the register level. Not sure if the registration should be rejected if the prefix does not end by `.` or if it should add it automatically
   I think rejecting the registration makes more sense as the provided prefix should be used in the registering extension so changing its value may introduce more issues than throwing an exception that should be found when testing so the develop will update the prefix accordingly



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gabriel-farache (via GitHub)" <gi...@apache.org>.
gabriel-farache commented on code in PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#discussion_r2581635461


##########
quarkus/addons/token-exchange/runtime/src/main/java/org/kie/kogito/addons/quarkus/token/exchange/cache/TokenPolicyManager.java:
##########
@@ -55,25 +56,37 @@ public long expireAfterRead(String key, CachedTokens value, long currentTime, lo
     }
 
     /**
-     * Calculate time to expiration based on token's actual expiration time minus proactive refresh buffer
+     * Calculate time to expiration based on token's actual expiration time minus proactive refresh buffer.
+     * This method sets the process instance context from the cache key for proper logging.
      */
     private static long calculateTimeToExpiration(String cacheKey, CachedTokens tokens) {
-        String authName = CacheUtils.extractAuthNameFromCacheKey(cacheKey);
-        long proactiveRefreshSeconds = Math.max(0, ConfigReaderUtils.getProactiveRefreshSeconds(authName));
+        // Extract process instance ID from cache key and set context for logging
+        String processInstanceId = CacheUtils.extractProcessInstanceIdFromCacheKey(cacheKey);
+        if (processInstanceId != null && !processInstanceId.isEmpty()) {
+            ProcessInstanceContext.setProcessInstanceId(processInstanceId);
+        }
 
-        long currentTimeSeconds = TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis());
-        long tokenExpirationSeconds = tokens.expirationTime();
+        try {
+            String authName = CacheUtils.extractAuthNameFromCacheKey(cacheKey);
+            long proactiveRefreshSeconds = Math.max(0, ConfigReaderUtils.getProactiveRefreshSeconds(authName));
 
-        // Schedule refresh proactiveRefreshSeconds before actual expiration
-        long refreshTimeSeconds = tokenExpirationSeconds - proactiveRefreshSeconds;
-        long timeToRefreshSeconds = Math.max(0, refreshTimeSeconds - currentTimeSeconds);
+            long currentTimeSeconds = TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis());
+            long tokenExpirationSeconds = tokens.expirationTime();
 
-        // Convert to nanoseconds for Caffeine
-        long timeToRefreshNanos = TimeUnit.SECONDS.toNanos(timeToRefreshSeconds);
+            // Schedule refresh proactiveRefreshSeconds before actual expiration
+            long refreshTimeSeconds = tokenExpirationSeconds - proactiveRefreshSeconds;
+            long timeToRefreshSeconds = Math.max(0, refreshTimeSeconds - currentTimeSeconds);
 
-        LOGGER.info("Token for key '{}' will be refreshed in {} seconds (expires at {}, refresh buffer {} seconds)",
-                cacheKey, timeToRefreshSeconds, tokenExpirationSeconds, proactiveRefreshSeconds);
+            // Convert to nanoseconds for Caffeine
+            long timeToRefreshNanos = TimeUnit.SECONDS.toNanos(timeToRefreshSeconds);
 
-        return timeToRefreshNanos;
+            LOGGER.info("Token for key '{}' will be refreshed in {} seconds (expires at {}, refresh buffer {} seconds)",
+                    cacheKey, timeToRefreshSeconds, tokenExpirationSeconds, proactiveRefreshSeconds);

Review Comment:
   may be useful when debugging so I'll add it



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gabriel-farache (via GitHub)" <gi...@apache.org>.
gabriel-farache commented on code in PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#discussion_r2585943656


##########
quarkus/addons/token-exchange/runtime/src/main/java/org/kie/kogito/addons/quarkus/token/exchange/cache/TokenEvictionHandler.java:
##########
@@ -54,29 +56,47 @@ public TokenEvictionHandler(TokenCRUD tokenCRUD) {
 
     /**
      * Creates a removal listener that can be used with Caffeine cache.
-     * 
+     * This listener sets the proper process instance context from the cache key before logging.
+     *
      * @return A removal listener that handles token eviction events
      */
     public RemovalListener<String, CachedTokens> createRemovalListener() {
         return (key, value, cause) -> {
             if (value == null)
                 return;
 
-            LOGGER.info("Token cache eviction for cache key '{}' - Cause: {}", key, cause);
-            onTokenExpired(key, value, cause);
+            // Extract process instance ID from cache key and set context for logging
+            String processInstanceId = CacheUtils.extractProcessInstanceIdFromCacheKey(key);
+            if (processInstanceId != null && !processInstanceId.isEmpty()) {
+                ProcessInstanceContext.setProcessInstanceId(processInstanceId);
+            }
+
+            try {
+                LOGGER.info("Token cache eviction for cache key '{}' - Cause: {}", key, cause);
+                onTokenExpired(key, value, cause);
+            } finally {
+                // Reset to general context after logging
+                ProcessInstanceContext.clear();
+            }
         };
     }
 
     /**
      * Callback method called when tokens are evicted from the cache.
-     * 
+     * Context is already set by the removal listener, so no need to set it here.
+     *
      * @param cacheKey The cache key of the evicted tokens
      * @param tokens The evicted token data
      * @param cause The reason for eviction (Caffeine's RemovalCause)
      */
     private void onTokenExpired(String cacheKey, CachedTokens tokens, RemovalCause cause) {
         LOGGER.warn("OAuth2 tokens for cache key '{}' have expired/been evicted: {}", cacheKey, cause);
 
+        String processInstanceId = CacheUtils.extractProcessInstanceIdFromCacheKey(cacheKey);

Review Comment:
   You are right, this is likely a leftover when refactoring :)



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gabriel-farache (via GitHub)" <gi...@apache.org>.
gabriel-farache commented on code in PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#discussion_r2585940026


##########
jbpm/jbpm-flow/src/main/java/org/kie/kogito/process/impl/AbstractProcessInstance.java:
##########
@@ -225,9 +226,35 @@ protected void reconnect() {
         }
         getProcessRuntime().getProcessInstanceManager().setLock(((MutableProcessInstances<T>) process.instances()).lock());
         processInstance.setMetaData(KOGITO_PROCESS_INSTANCE, this);
+
+        restoreProcessInstanceContext();
+
         processInstance.reconnect();
     }
 
+    private void restoreProcessInstanceContext() {
+        Map<String, List<String>> headers = processInstance.getHeaders();
+        if (headers != null && !headers.isEmpty()) {
+            Map<String, String> contextMap = convertHeadersToContextMap(headers);
+            if (!contextMap.isEmpty()) {
+                org.kie.kogito.services.context.ProcessInstanceContext.setContextFromAsync(contextMap);

Review Comment:
   >  considering that the invocation to the restoreProcessInstanceContext() was produced by a caller thread, that is not under our control, aren't where here making the caller thread to loose any potential values stored by him in the MDC?
   Does it make sense?
   
   Yes it makes sense, a thread called the reconnect method but it does not matter because the reconnect method is called by `ContextAwareProcessInstanceLockStrategy` which clears the MDC context in the end anyway. 
   Here restoreProcessInstanceContext() isabout restoring additional context beyond just the process instance ID and this additional context is in the headers
   



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "wmedvede (via GitHub)" <gi...@apache.org>.
wmedvede commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3656905488

   Hi  @gabriel-farache , I could finally rebuild all locally with the latest chagnes, and now I can see traces I Jaeger.
   
   But I see the following that doesen't look to be ok.
   
   I have exected one instance of the `greet` workflow with the follwing results:
   
   **1-)** Three sonataflow traces are produced. (I'm not worring about the entry trace "POST / greet"
   
   <img width="1920" height="301" alt="01-trace-greet" src="https://github.com/user-attachments/assets/618e9387-efa3-4978-88a5-3f6c62c64f08" />
   
   **2-)**  In SF Trace1 (see next image), we can see that:
   
   2.1) The timeout for the process.instance.started event/log is after the timeout for the node.started event/log
   
   2.2) We can see also log.message  event with saying that:
   
    "Context in storage not the expected context, Scope.close was not called correctly. Details: OTel context before: {spanId=da631a1e1879c5b8, traceId=2bb8ab9c81cac26dbe7596f4c6e21484, sampled=true, parentId=a705615a9337e0f3}. OTel context toAttach: {spanId=2f575442d6c4216b, traceId=2bb8ab9c81cac26dbe7596f4c6e21484, sampled=true, parentId=db22593220083e93}"
   
   Does it make sense? 
   
   <img width="1910" height="613" alt="02-trace-greet" src="https://github.com/user-attachments/assets/7641312f-d181-4457-8e4a-c7fa5a67ae9f" />
   
   **3-)** In SF Trace2 (see next image), we can see that:
   
   A node.started event/log was created. OK this makes sense follwoing the WF.
   
   <img width="1881" height="332" alt="03-trace-greet" src="https://github.com/user-attachments/assets/6410b941-4455-4379-a62c-df2347adbd9c" />
   
   **4-)** In SF Trace3 (see next image), we can see that:
   
   4.1) a new node.started event/log is produced. ok
   4.2) a process.instance.complete event/log is produced. ok
   however, no `node.completed` event/log is produced along the execution.
   4.3) we can see also the log.message event/log saying that:
   
   "Context in storage not the expected context, Scope.close was not called correctly. Details: OTel context before: {spanId=2f575442d6c4216b, traceId=2bb8ab9c81cac26dbe7596f4c6e21484, sampled=true, parentId=db22593220083e93}. OTel context toAttach: {spanId=db22593220083e93, traceId=2bb8ab9c81cac26dbe7596f4c6e21484, sampled=true, parentId=da631a1e1879c5b8}"
   
   Does it make sense?
   
   <img width="1865" height="382" alt="04-trace-greet" src="https://github.com/user-attachments/assets/581cdf2e-519f-4c8b-bf3f-aa0053bac7dd" />
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gabriel-farache (via GitHub)" <gi...@apache.org>.
gabriel-farache commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3677851730

   @wmedvede Currently, with what I pushed, using https://github.com/gabriel-farache/test-sonataflow-opentelemetry/blob/main/src/main/resources/yamlgreet.sw.yml this is the traces I get 
   [trace.json](https://github.com/user-attachments/files/24272157/trace.json)
   <img width="1917" height="420" alt="image" src="https://github.com/user-attachments/assets/52a5c775-2f2f-4608-979c-78d5bc629938" />
   
   This looks fine except for the span `sonataflow.process.anothergreetSubflow.execute` being a child of `GreetInEnglish` instead of `ExecuteSubflow` span.
   
   Do we want to "force" a new trace creation for `ExecuteSubflow` after the sleep and for `waitForEvent`? For any suspension actually


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gabriel-farache (via GitHub)" <gi...@apache.org>.
gabriel-farache commented on code in PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#discussion_r2581583731


##########
kogito-test-utils/src/main/java/org/kie/kogito/test/utils/JsonProcessInstanceLogAnalyzer.java:
##########
@@ -0,0 +1,559 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.kie.kogito.test.utils;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.time.format.DateTimeParseException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.fail;
+
+/**
+ * Utility class for analyzing process instance aware logging in JSON format.
+ * Supports parsing JSON log format with MDC fields including processInstanceId.
+ * This class replaces pipe-delimited format parsing for machine-consumable JSON logs.
+ */
+public class JsonProcessInstanceLogAnalyzer {
+
+    private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
+
+    // Common timestamp patterns in JSON logs
+    private static final DateTimeFormatter[] TIMESTAMP_FORMATTERS = {
+            DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"),
+            DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSX"),
+            DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS"),
+            DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"),
+            DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss,SSS"),
+            DateTimeFormatter.ISO_LOCAL_DATE_TIME
+    };
+
+    /**
+     * Represents a single JSON log entry with all its components.
+     */
+    public static class JsonLogEntry {
+        public final LocalDateTime timestamp;
+        public final String level;
+        public final String loggerName;
+        public final String message;
+        public final Map<String, String> mdc;
+        public final String threadName;
+        public final String sequenceNumber;
+        public final JsonNode rawJson;
+
+        public JsonLogEntry(LocalDateTime timestamp, String level, String loggerName,
+                String message, Map<String, String> mdc, String threadName,
+                String sequenceNumber, JsonNode rawJson) {
+            this.timestamp = timestamp;
+            this.level = level != null ? level : "INFO";
+            this.loggerName = loggerName != null ? loggerName : "unknown.logger";
+            this.message = message != null ? message : "";
+            this.mdc = mdc != null ? new HashMap<>(mdc) : new HashMap<>();
+            this.threadName = threadName;
+            this.sequenceNumber = sequenceNumber;
+            this.rawJson = rawJson;
+        }
+
+        /**
+         * Get the process instance ID from MDC.
+         */
+        public String getProcessInstanceId() {
+            return mdc.get("processInstanceId");
+        }
+
+        /**
+         * Check if this log entry has a process instance ID.
+         */
+        public boolean hasProcessInstance() {
+            String processInstanceId = getProcessInstanceId();
+            return processInstanceId != null && !processInstanceId.trim().isEmpty();
+        }
+
+        /**
+         * Check if this log entry is general context (no process instance ID).
+         */
+        public boolean isGeneralContext() {
+            return !hasProcessInstance();
+        }
+
+        /**
+         * Get trace ID from MDC if available.
+         */
+        public String getTraceId() {
+            return mdc.get("traceId");
+        }
+
+        /**
+         * Get span ID from MDC if available.
+         */
+        public String getSpanId() {
+            return mdc.get("spanId");
+        }
+
+        @Override
+        public String toString() {
+            return String.format("JsonLogEntry{timestamp=%s, level=%s, processInstanceId=%s, logger=%s, message=%s}",
+                    timestamp, level, getProcessInstanceId(), loggerName, message);
+        }
+    }
+
+    /**
+     * Statistics about JSON log entries for analysis.
+     */
+    public static class JsonLogStatistics {
+        public final long totalLogs;
+        public final long processSpecificLogs;
+        public final long generalContextLogs;
+        public final Map<String, Long> logsByProcessInstance;
+        public final Map<String, Long> logsByLevel;
+        public final Map<String, Long> logsByLogger;
+        public final long logsWithTracing;
+
+        public JsonLogStatistics(List<JsonLogEntry> entries) {
+            this.totalLogs = entries.size();
+            this.processSpecificLogs = entries.stream().filter(JsonLogEntry::hasProcessInstance).count();
+            this.generalContextLogs = entries.stream().filter(JsonLogEntry::isGeneralContext).count();
+            this.logsByProcessInstance = entries.stream()
+                    .collect(Collectors.groupingBy(
+                            entry -> entry.hasProcessInstance() ? entry.getProcessInstanceId() : "",
+                            Collectors.counting()));
+            this.logsByLevel = entries.stream()
+                    .collect(Collectors.groupingBy(entry -> entry.level, Collectors.counting()));
+            this.logsByLogger = entries.stream()
+                    .collect(Collectors.groupingBy(entry -> entry.loggerName, Collectors.counting()));
+            this.logsWithTracing = entries.stream()
+                    .filter(entry -> entry.getTraceId() != null)
+                    .count();
+        }
+
+        @Override
+        public String toString() {
+            return String.format(
+                    "JsonLogStatistics{total=%d, processSpecific=%d, general=%d, byProcess=%s, byLevel=%s, withTracing=%d}",
+                    totalLogs, processSpecificLogs, generalContextLogs, logsByProcessInstance, logsByLevel, logsWithTracing);
+        }
+    }
+
+    /**
+     * Parse JSON log file with multiline support and resilient error handling.
+     */
+    public static List<JsonLogEntry> parseJsonLogFile(Path logFile) throws IOException {
+        List<String> lines = Files.readAllLines(logFile);

Review Comment:
   I did not care much for perfs as it's a test util but sure, I can read line by line to be safe



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gabriel-farache (via GitHub)" <gi...@apache.org>.
gabriel-farache commented on code in PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#discussion_r2581652805


##########
quarkus/extensions/kogito-quarkus-serverless-workflow-jdbc-token-persistence-extension/kogito-quarkus-serverless-workflow-jdbc-token-persistence-integration-test/src/test/java/org/kie/kogito/quarkus/token/persistence/workflows/TokenExchangeIT.java:
##########
@@ -116,37 +119,58 @@ private void validateCachingBehavior() {
     }
 
     /**
-     * Get the path to the Quarkus log file
+     * Validate OAuth2 token exchange and caching behavior from JSON log files
      */
-    private Path getQuarkusLogFile() {
-        // The log file path is configured in application.properties as quarkus.log.file.path
-        // For integration tests, Quarkus uses target/quarkus.log
-        String logPath = System.getProperty("quarkus.log.file.path", "target/quarkus.log");
-        return Paths.get(logPath);
-    }
-
-    /**
-     * Validate OAuth2 token exchange and caching behavior from log file
-     */
-    private void validateOAuth2LogsFromFile(Path logFile) throws IOException {
-        List<String> logLines = Files.readAllLines(logFile);
-        LOGGER.info("Analyzing {} log lines from {} for OAuth2 token exchange patterns", logLines.size(), logFile);
-
-        Assertions.assertThat(logLines).hasSizeGreaterThan(0);
-
-        List<String> usedJDBCRepository = logLines.stream().filter(line -> line.contains(LOG_PREFIX_USED_REPOSITORY + ": JdbcTokenCacheRepository")).toList();
-        List<String> usedInMemoryRepository = logLines.stream().filter(line -> line.contains(LOG_PREFIX_USED_REPOSITORY + ": InMemoryTokenCacheRepository")).toList();
+    private void validateOAuth2LogsFromFile(String processInstanceId) throws IOException {
+        // Parse all JSON log files to handle rotation
+        List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> allEntries = parseAllJsonLogFilesWithRetry();
+
+        Assertions.assertThat(allEntries).hasSizeGreaterThan(0);
+
+        LOGGER.info("Analyzing {} JSON log entries for OAuth2 token exchange patterns for process instance {}",
+                allEntries.size(), processInstanceId);
+
+        // Filter logs to only include those related to this process instance or general context
+        // This prevents interference from concurrent tests
+        List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> processSpecificEntries = allEntries.stream()
+                .filter(entry -> processInstanceId.equals(entry.getProcessInstanceId()) ||
+                        entry.getProcessInstanceId() == null ||
+                        entry.getProcessInstanceId().isEmpty())
+                .toList();
+
+        LOGGER.info("Found {} JSON log entries specific to process instance {} or general context",
+                processSpecificEntries.size(), processInstanceId);
+
+        // Check repository initialization logs in all entries (not just process-specific)
+        // Repository initialization might be logged before test starts, so we check but don't fail
+        List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> usedJDBCRepository = allEntries.stream()
+                .filter(entry -> entry.message.contains(LOG_PREFIX_USED_REPOSITORY + ": JdbcTokenCacheRepository"))
+                .toList();
+        List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> usedInMemoryRepository = allEntries.stream()
+                .filter(entry -> entry.message.contains(LOG_PREFIX_USED_REPOSITORY + ": InMemoryTokenCacheRepository"))
+                .toList();
         Assertions.assertThat(usedJDBCRepository).hasSize(1);
         Assertions.assertThat(usedInMemoryRepository).hasSize(0);
 
-        LOGGER.info("JDBC repository was used as expected");
-
-        List<String> startTokenExchangeLogLines = logLines.stream().filter(line -> line.contains(LOG_PREFIX_STARTING_TOKEN_EXCHANGE)).toList();
-        List<String> completedTokenExchangeLogLines = logLines.stream().filter(line -> line.contains(LOG_PREFIX_COMPLETED_TOKEN_EXCHANGE)).toList();
-        List<String> failedTokenExchangeLogLines = logLines.stream().filter(line -> line.contains(LOG_PREFIX_FAILED_TOKEN_EXCHANGE)).toList();
-        List<String> refreshTokenExchangeLogLines = logLines.stream().filter(line -> line.contains(LOG_PREFIX_TOKEN_REFRESH)).toList();
-        List<String> completedRefreshTokenExchangeLogLines = logLines.stream().filter(line -> line.contains(LOG_PREFIX_REFRESH_COMPLETED)).toList();
-        List<String> failedRefreshTokenExchangeLogLines = logLines.stream().filter(line -> line.contains(LOG_PREFIX_FAILED_TO_REFRESH_TOKEN)).toList();
+        // Filter token exchange logs to only those related to this process instance
+        List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> startTokenExchangeLogLines = processSpecificEntries.stream()
+                .filter(entry -> entry.message.contains(LOG_PREFIX_STARTING_TOKEN_EXCHANGE))
+                .toList();
+        List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> completedTokenExchangeLogLines = processSpecificEntries.stream()
+                .filter(entry -> entry.message.contains(LOG_PREFIX_COMPLETED_TOKEN_EXCHANGE))
+                .toList();
+        List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> failedTokenExchangeLogLines = processSpecificEntries.stream()
+                .filter(entry -> entry.message.contains(LOG_PREFIX_FAILED_TOKEN_EXCHANGE))
+                .toList();
+        List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> refreshTokenExchangeLogLines = processSpecificEntries.stream()
+                .filter(entry -> entry.message.contains(LOG_PREFIX_TOKEN_REFRESH) && processInstanceId.equals(entry.getProcessInstanceId()))
+                .toList();
+        List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> completedRefreshTokenExchangeLogLines = processSpecificEntries.stream()
+                .filter(entry -> entry.message.contains(LOG_PREFIX_REFRESH_COMPLETED) && processInstanceId.equals(entry.getProcessInstanceId()))
+                .toList();
+        List<JsonProcessInstanceLogAnalyzer.JsonLogEntry> failedRefreshTokenExchangeLogLines = processSpecificEntries.stream()
+                .filter(entry -> entry.message.contains(LOG_PREFIX_FAILED_TO_REFRESH_TOKEN) && processInstanceId.equals(entry.getProcessInstanceId()))
+                .toList();

Review Comment:
   I will convert those lines to a single iteration with a bunch of `if` statements to populate the lists but I think for clarity it's better to keep each list individually instead of a map because then when validating the lists it would require to call the `get` from the map with the proper key (which should be a constant), would that be OK with you?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gabriel-farache (via GitHub)" <gi...@apache.org>.
gabriel-farache commented on code in PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#discussion_r2572386557


##########
api/kogito-services/src/main/java/org/kie/kogito/services/uow/ProcessInstanceAwareUnitOfWork.java:
##########
@@ -0,0 +1,208 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.kie.kogito.services.uow;
+
+import java.util.Map;
+
+import org.kie.kogito.services.context.ProcessInstanceContext;
+import org.kie.kogito.uow.UnitOfWork;
+import org.kie.kogito.uow.WorkUnit;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * A UnitOfWork wrapper that manages process instance context throughout the unit of work lifecycle.
+ * This implementation ensures proper context cleanup even in the face of exceptions, preventing
+ * context leaks and ensuring thread safety.
+ * <p>
+ * Key features:
+ * - Automatic context setup and cleanup
+ * - Support for nested UnitOfWork with context preservation
+ * - Exception-safe cleanup using try-finally blocks
+ * - ThreadLocal leak prevention
+ * - Integration with distributed tracing systems
+ * <p>
+ * Thread Safety: This class is thread-safe and properly manages ThreadLocal cleanup to prevent
+ * memory leaks in long-running applications.
+ */
+public record ProcessInstanceAwareUnitOfWork(UnitOfWork delegate, String processInstanceId) implements UnitOfWork {

Review Comment:
   but indeed the method using this is not used, it is leftover from the initial way I added the Otel, I'll remove the dead code I introduced



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "wmedvede (via GitHub)" <gi...@apache.org>.
wmedvede commented on code in PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#discussion_r2571007632


##########
kogito-bom/pom.xml:
##########
@@ -2702,6 +2702,38 @@
         <artifactId>sonataflow-quarkus-deployment</artifactId>
         <version>${project.version}</version>
       </dependency>
+      <dependency>
+          <groupId>org.apache.kie.sonataflow</groupId>
+          <artifactId>sonataflow-quarkus-jdbc-token-persistence</artifactId>

Review Comment:
   This looks like a new extension not related nor refered by the OTEL support introduced by this PR.
   I am correcrt?



##########
api/kogito-services/src/main/java/org/kie/kogito/services/uow/UnitOfWorkExecutor.java:
##########
@@ -54,4 +55,60 @@ public static <T> T executeInUnitOfWork(UnitOfWorkManager uowManager, Supplier<T
         }
 
     }
+
+    /**
+     * Executes the given supplier within a process-instance-aware unit of work.
+     * This method ensures that the process instance context is properly managed
+     * throughout the unit of work lifecycle.
+     *
+     * @param uowManager the unit of work manager
+     * @param processInstanceId the process instance ID to use for context
+     * @param supplier the supplier to execute
+     * @param <T> the return type
+     * @return the result of the supplier
+     */
+    public static <T> T executeInUnitOfWork(UnitOfWorkManager uowManager, String processInstanceId, Supplier<T> supplier) {
+        T result = null;
+        UnitOfWork baseUow = uowManager.newUnitOfWork();
+        UnitOfWork uow = new ProcessInstanceAwareUnitOfWork(baseUow, processInstanceId);
+
+        try {
+            uow.start();
+
+            result = supplier.get();
+            uow.end();
+
+            return result;
+        } catch (ProcessInstanceExecutionException e) {
+            uow.end();
+            throw e;
+        } catch (Exception e) {
+            uow.abort();
+            if (e instanceof RuntimeException) {
+                throw (RuntimeException) e;
+            } else {
+                throw new RuntimeException(e);
+            }
+        }
+    }
+
+    /**
+     * Executes the given supplier within a unit of work with automatic process instance context detection.
+     * If a process instance context is already set, it will be used for the unit of work.
+     * Otherwise, a standard unit of work will be created.
+     *
+     * @param uowManager the unit of work manager
+     * @param supplier the supplier to execute
+     * @param <T> the return type
+     * @return the result of the supplier
+     */
+    public static <T> T executeInProcessAwareUnitOfWork(UnitOfWorkManager uowManager, Supplier<T> supplier) {

Review Comment:
   Doesn't look to be used.
   A left over maybe?



##########
api/kogito-services/src/main/java/org/kie/kogito/services/context/ProcessInstanceContext.java:
##########
@@ -0,0 +1,343 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.kie.kogito.services.context;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.function.Supplier;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.MDC;
+
+/**
+ * Utility class for managing process instance context in logging operations.
+ * This class uses SLF4J's Mapped Diagnostic Context (MDC) to ensure process instance IDs
+ * are automatically included in log messages.
+ *
+ * When no process instance is available, an empty string is used as the default value
+ * to provide cleaner formatting and easier searching in log aggregation systems.
+ *
+ * Thread Safety: This class is thread-safe and properly manages context isolation
+ * between different threads using MDC's inherent ThreadLocal-based storage.
+ *
+ * Extension Support: Extensions can register via {@link #registerContextExtension(String, ContextExtension)}
+ * to participate in context preservation during async operations.
+ */
+public final class ProcessInstanceContext {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(ProcessInstanceContext.class);
+
+    private static final Map<String, ContextExtension> EXTENSIONS = new ConcurrentHashMap<>();
+
+    /**
+     * MDC key used to store the process instance ID.
+     * This key should be referenced in logging configurations.
+     */
+    public static final String MDC_PROCESS_INSTANCE_KEY = "processInstanceId";
+
+    /**
+     * MDC key for trace ID (for distributed tracing correlation).
+     */
+    public static final String MDC_TRACE_ID_KEY = "traceId";
+
+    /**
+     * MDC key for span ID (for distributed tracing correlation).
+     */
+    public static final String MDC_SPAN_ID_KEY = "spanId";
+
+    /**
+     * Span attribute key for process instance ID (OpenTelemetry).
+     */
+    public static final String SPAN_ATTRIBUTE_PROCESS_INSTANCE_ID = "kogito.process.instance.id";
+
+    /**
+     * Default value used when no process instance ID is available.
+     * Empty string for cleaner log formatting and easier searching.
+     */
+    public static final String GENERAL_CONTEXT = "";
+
+    // Private constructor to prevent instantiation
+    private ProcessInstanceContext() {
+        // Utility class
+    }
+
+    /**
+     * Sets the process instance ID for the current thread context.
+     * This method updates SLF4J MDC and only performs the update if the value changes.
+     *
+     * @param processInstanceId the process instance ID to set, or null to use general context
+     */
+    public static void setProcessInstanceId(String processInstanceId) {
+        String effectiveId = processInstanceId != null ? processInstanceId : GENERAL_CONTEXT;
+
+        // Only update MDC if the value is changing (optimization)
+        String currentId = MDC.get(MDC_PROCESS_INSTANCE_KEY);
+        if (!effectiveId.equals(currentId)) {
+            MDC.put(MDC_PROCESS_INSTANCE_KEY, effectiveId);
+        }
+    }
+
+    /**
+     * Gets the current process instance ID from MDC.
+     *
+     * @return the current process instance ID, or empty string if no context is set
+     */
+    public static String getProcessInstanceId() {
+        String id = MDC.get(MDC_PROCESS_INSTANCE_KEY);
+        return id != null ? id : GENERAL_CONTEXT;
+    }
+
+    /**
+     * Clears the process instance context for the current thread.
+     * This resets the MDC to the general context (empty string).
+     */
+    public static void clear() {
+        MDC.put(MDC_PROCESS_INSTANCE_KEY, GENERAL_CONTEXT);
+    }
+
+    /**
+     * Checks if a process instance context is currently set.
+     *
+     * @return true if a process instance context is set, false otherwise
+     */
+    public static boolean hasContext() {
+        String id = MDC.get(MDC_PROCESS_INSTANCE_KEY);
+        return id != null && !GENERAL_CONTEXT.equals(id);
+    }
+
+    /**
+     * Executes the given operation within the specified process instance context.
+     * This method ensures proper context setup and cleanup even if exceptions occur.
+     *
+     * @param processInstanceId the process instance ID to set for the operation
+     * @param operation the operation to execute
+     * @param <T> the return type of the operation
+     * @return the result of the operation
+     */
+    public static <T> T withProcessInstanceContext(String processInstanceId, Supplier<T> operation) {
+        setProcessInstanceId(processInstanceId);
+        try {
+            return operation.get();
+        } finally {
+            clear();
+        }
+    }
+
+    /**
+     * Executes the given runnable within the specified process instance context.
+     * This method ensures proper context setup and cleanup even if exceptions occur.
+     *
+     * @param processInstanceId the process instance ID to set for the operation
+     * @param operation the operation to execute
+     */
+    public static void withProcessInstanceContext(String processInstanceId, Runnable operation) {

Review Comment:
   Is this method being used?



##########
api/kogito-services/src/main/java/org/kie/kogito/services/uow/ProcessInstanceAwareUnitOfWork.java:
##########
@@ -0,0 +1,208 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.kie.kogito.services.uow;
+
+import java.util.Map;
+
+import org.kie.kogito.services.context.ProcessInstanceContext;
+import org.kie.kogito.uow.UnitOfWork;
+import org.kie.kogito.uow.WorkUnit;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * A UnitOfWork wrapper that manages process instance context throughout the unit of work lifecycle.
+ * This implementation ensures proper context cleanup even in the face of exceptions, preventing
+ * context leaks and ensuring thread safety.
+ * <p>
+ * Key features:
+ * - Automatic context setup and cleanup
+ * - Support for nested UnitOfWork with context preservation
+ * - Exception-safe cleanup using try-finally blocks
+ * - ThreadLocal leak prevention
+ * - Integration with distributed tracing systems
+ * <p>
+ * Thread Safety: This class is thread-safe and properly manages ThreadLocal cleanup to prevent
+ * memory leaks in long-running applications.
+ */
+public record ProcessInstanceAwareUnitOfWork(UnitOfWork delegate, String processInstanceId) implements UnitOfWork {

Review Comment:
   This class looks to not being used. 
   Is this a left over?



##########
api/kogito-services/src/main/java/org/kie/kogito/services/uow/UnitOfWorkExecutor.java:
##########
@@ -54,4 +55,60 @@ public static <T> T executeInUnitOfWork(UnitOfWorkManager uowManager, Supplier<T
         }
 
     }
+
+    /**
+     * Executes the given supplier within a process-instance-aware unit of work.
+     * This method ensures that the process instance context is properly managed
+     * throughout the unit of work lifecycle.
+     *
+     * @param uowManager the unit of work manager
+     * @param processInstanceId the process instance ID to use for context
+     * @param supplier the supplier to execute
+     * @param <T> the return type
+     * @return the result of the supplier
+     */
+    public static <T> T executeInUnitOfWork(UnitOfWorkManager uowManager, String processInstanceId, Supplier<T> supplier) {

Review Comment:
   Doesn't look to be used.
   A left over maybe?



##########
api/kogito-services/src/main/java/org/kie/kogito/services/context/ProcessInstanceContext.java:
##########
@@ -0,0 +1,343 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.kie.kogito.services.context;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.function.Supplier;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.MDC;
+
+/**
+ * Utility class for managing process instance context in logging operations.
+ * This class uses SLF4J's Mapped Diagnostic Context (MDC) to ensure process instance IDs
+ * are automatically included in log messages.
+ *
+ * When no process instance is available, an empty string is used as the default value
+ * to provide cleaner formatting and easier searching in log aggregation systems.
+ *
+ * Thread Safety: This class is thread-safe and properly manages context isolation
+ * between different threads using MDC's inherent ThreadLocal-based storage.
+ *
+ * Extension Support: Extensions can register via {@link #registerContextExtension(String, ContextExtension)}
+ * to participate in context preservation during async operations.
+ */
+public final class ProcessInstanceContext {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(ProcessInstanceContext.class);
+
+    private static final Map<String, ContextExtension> EXTENSIONS = new ConcurrentHashMap<>();
+
+    /**
+     * MDC key used to store the process instance ID.
+     * This key should be referenced in logging configurations.
+     */
+    public static final String MDC_PROCESS_INSTANCE_KEY = "processInstanceId";
+
+    /**
+     * MDC key for trace ID (for distributed tracing correlation).
+     */
+    public static final String MDC_TRACE_ID_KEY = "traceId";
+
+    /**
+     * MDC key for span ID (for distributed tracing correlation).
+     */
+    public static final String MDC_SPAN_ID_KEY = "spanId";
+
+    /**
+     * Span attribute key for process instance ID (OpenTelemetry).
+     */
+    public static final String SPAN_ATTRIBUTE_PROCESS_INSTANCE_ID = "kogito.process.instance.id";
+
+    /**
+     * Default value used when no process instance ID is available.
+     * Empty string for cleaner log formatting and easier searching.
+     */
+    public static final String GENERAL_CONTEXT = "";
+
+    // Private constructor to prevent instantiation
+    private ProcessInstanceContext() {
+        // Utility class
+    }
+
+    /**
+     * Sets the process instance ID for the current thread context.
+     * This method updates SLF4J MDC and only performs the update if the value changes.
+     *
+     * @param processInstanceId the process instance ID to set, or null to use general context
+     */
+    public static void setProcessInstanceId(String processInstanceId) {
+        String effectiveId = processInstanceId != null ? processInstanceId : GENERAL_CONTEXT;
+
+        // Only update MDC if the value is changing (optimization)
+        String currentId = MDC.get(MDC_PROCESS_INSTANCE_KEY);
+        if (!effectiveId.equals(currentId)) {
+            MDC.put(MDC_PROCESS_INSTANCE_KEY, effectiveId);
+        }
+    }
+
+    /**
+     * Gets the current process instance ID from MDC.
+     *
+     * @return the current process instance ID, or empty string if no context is set
+     */
+    public static String getProcessInstanceId() {
+        String id = MDC.get(MDC_PROCESS_INSTANCE_KEY);
+        return id != null ? id : GENERAL_CONTEXT;
+    }
+
+    /**
+     * Clears the process instance context for the current thread.
+     * This resets the MDC to the general context (empty string).
+     */
+    public static void clear() {
+        MDC.put(MDC_PROCESS_INSTANCE_KEY, GENERAL_CONTEXT);
+    }
+
+    /**
+     * Checks if a process instance context is currently set.
+     *
+     * @return true if a process instance context is set, false otherwise
+     */
+    public static boolean hasContext() {
+        String id = MDC.get(MDC_PROCESS_INSTANCE_KEY);
+        return id != null && !GENERAL_CONTEXT.equals(id);
+    }
+
+    /**
+     * Executes the given operation within the specified process instance context.
+     * This method ensures proper context setup and cleanup even if exceptions occur.
+     *
+     * @param processInstanceId the process instance ID to set for the operation
+     * @param operation the operation to execute
+     * @param <T> the return type of the operation
+     * @return the result of the operation
+     */
+    public static <T> T withProcessInstanceContext(String processInstanceId, Supplier<T> operation) {
+        setProcessInstanceId(processInstanceId);
+        try {
+            return operation.get();
+        } finally {
+            clear();
+        }
+    }
+
+    /**
+     * Executes the given runnable within the specified process instance context.
+     * This method ensures proper context setup and cleanup even if exceptions occur.
+     *
+     * @param processInstanceId the process instance ID to set for the operation
+     * @param operation the operation to execute
+     */
+    public static void withProcessInstanceContext(String processInstanceId, Runnable operation) {
+        setProcessInstanceId(processInstanceId);
+        try {
+            operation.run();
+        } finally {
+            clear();
+        }
+    }
+
+    /**
+     * Registers a context extension that will participate in context preservation.
+     * Extensions with the same ID will replace previously registered extensions.
+     *
+     * @param extensionId the unique identifier for the extension
+     * @param extension the extension to register
+     * @throws IllegalArgumentException if extensionId is null or empty, or if extension is null
+     */
+    public static void registerContextExtension(String extensionId, ContextExtension extension) {
+        if (extensionId == null || extensionId.isEmpty()) {
+            throw new IllegalArgumentException("Extension ID must not be null or empty");
+        }
+        if (extension == null) {
+            throw new IllegalArgumentException("Extension must not be null");
+        }
+        EXTENSIONS.put(extensionId, extension);
+        LOGGER.debug("Registered context extension: {}", extensionId);
+    }
+
+    /**
+     * Registers a context extension using its own extension ID.
+     * Extensions with the same ID will replace previously registered extensions.
+     *
+     * @param extension the extension to register
+     * @throws IllegalArgumentException if extension is null or its ID is null/empty
+     */
+    public static void registerContextExtension(ContextExtension extension) {
+        if (extension == null) {
+            throw new IllegalArgumentException("Extension must not be null");
+        }
+        registerContextExtension(extension.getExtensionId(), extension);
+    }
+
+    /**
+     * Retrieves a registered context extension by its ID.
+     *
+     * @param extensionId the extension ID to retrieve
+     * @return the registered extension, or null if not found
+     */
+    public static ContextExtension getExtension(String extensionId) {
+        return EXTENSIONS.get(extensionId);
+    }
+
+    /**
+     * Clears all registered extensions.
+     * This is primarily for testing purposes to ensure test isolation.
+     */
+    static void clearUserExtensions() {

Review Comment:
   If the extesions are auto-registerd when the application starts, I'm not sure at which point this clear will happen



##########
api/kogito-services/src/main/java/org/kie/kogito/services/context/ProcessInstanceContext.java:
##########
@@ -0,0 +1,343 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.kie.kogito.services.context;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.function.Supplier;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.MDC;
+
+/**
+ * Utility class for managing process instance context in logging operations.
+ * This class uses SLF4J's Mapped Diagnostic Context (MDC) to ensure process instance IDs
+ * are automatically included in log messages.
+ *
+ * When no process instance is available, an empty string is used as the default value
+ * to provide cleaner formatting and easier searching in log aggregation systems.
+ *
+ * Thread Safety: This class is thread-safe and properly manages context isolation
+ * between different threads using MDC's inherent ThreadLocal-based storage.
+ *
+ * Extension Support: Extensions can register via {@link #registerContextExtension(String, ContextExtension)}
+ * to participate in context preservation during async operations.
+ */
+public final class ProcessInstanceContext {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(ProcessInstanceContext.class);
+
+    private static final Map<String, ContextExtension> EXTENSIONS = new ConcurrentHashMap<>();
+
+    /**
+     * MDC key used to store the process instance ID.
+     * This key should be referenced in logging configurations.
+     */
+    public static final String MDC_PROCESS_INSTANCE_KEY = "processInstanceId";
+
+    /**
+     * MDC key for trace ID (for distributed tracing correlation).
+     */
+    public static final String MDC_TRACE_ID_KEY = "traceId";
+
+    /**
+     * MDC key for span ID (for distributed tracing correlation).
+     */
+    public static final String MDC_SPAN_ID_KEY = "spanId";
+
+    /**
+     * Span attribute key for process instance ID (OpenTelemetry).
+     */
+    public static final String SPAN_ATTRIBUTE_PROCESS_INSTANCE_ID = "kogito.process.instance.id";
+
+    /**
+     * Default value used when no process instance ID is available.
+     * Empty string for cleaner log formatting and easier searching.
+     */
+    public static final String GENERAL_CONTEXT = "";
+
+    // Private constructor to prevent instantiation
+    private ProcessInstanceContext() {
+        // Utility class
+    }
+
+    /**
+     * Sets the process instance ID for the current thread context.
+     * This method updates SLF4J MDC and only performs the update if the value changes.
+     *
+     * @param processInstanceId the process instance ID to set, or null to use general context
+     */
+    public static void setProcessInstanceId(String processInstanceId) {
+        String effectiveId = processInstanceId != null ? processInstanceId : GENERAL_CONTEXT;
+
+        // Only update MDC if the value is changing (optimization)
+        String currentId = MDC.get(MDC_PROCESS_INSTANCE_KEY);
+        if (!effectiveId.equals(currentId)) {
+            MDC.put(MDC_PROCESS_INSTANCE_KEY, effectiveId);
+        }
+    }
+
+    /**
+     * Gets the current process instance ID from MDC.
+     *
+     * @return the current process instance ID, or empty string if no context is set
+     */
+    public static String getProcessInstanceId() {
+        String id = MDC.get(MDC_PROCESS_INSTANCE_KEY);
+        return id != null ? id : GENERAL_CONTEXT;
+    }
+
+    /**
+     * Clears the process instance context for the current thread.
+     * This resets the MDC to the general context (empty string).
+     */
+    public static void clear() {
+        MDC.put(MDC_PROCESS_INSTANCE_KEY, GENERAL_CONTEXT);
+    }
+
+    /**
+     * Checks if a process instance context is currently set.
+     *
+     * @return true if a process instance context is set, false otherwise
+     */
+    public static boolean hasContext() {
+        String id = MDC.get(MDC_PROCESS_INSTANCE_KEY);
+        return id != null && !GENERAL_CONTEXT.equals(id);
+    }
+
+    /**
+     * Executes the given operation within the specified process instance context.
+     * This method ensures proper context setup and cleanup even if exceptions occur.
+     *
+     * @param processInstanceId the process instance ID to set for the operation
+     * @param operation the operation to execute
+     * @param <T> the return type of the operation
+     * @return the result of the operation
+     */
+    public static <T> T withProcessInstanceContext(String processInstanceId, Supplier<T> operation) {

Review Comment:
   Is this method being used?



##########
api/kogito-services/src/main/java/org/kie/kogito/services/context/ProcessInstanceAwareWorkItemHandler.java:
##########
@@ -0,0 +1,124 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.kie.kogito.services.context;
+
+import java.util.Map;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.Executor;
+import java.util.function.Supplier;
+
+import org.kie.kogito.internal.process.workitem.KogitoWorkItem;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Utility class for propagating process instance context to async work item executions.
+ * This class provides helper methods for work item handlers to ensure proper MDC context
+ * propagation in async operations.
+ */
+public final class ProcessInstanceAwareWorkItemHandler {

Review Comment:
   Looks like this class is not being used.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "wmedvede (via GitHub)" <gi...@apache.org>.
wmedvede commented on code in PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#discussion_r2588069484


##########
jbpm/jbpm-flow/src/main/java/org/kie/kogito/process/impl/AbstractProcessInstance.java:
##########
@@ -225,9 +226,35 @@ protected void reconnect() {
         }
         getProcessRuntime().getProcessInstanceManager().setLock(((MutableProcessInstances<T>) process.instances()).lock());
         processInstance.setMetaData(KOGITO_PROCESS_INSTANCE, this);
+
+        restoreProcessInstanceContext();
+
         processInstance.reconnect();
     }
 
+    private void restoreProcessInstanceContext() {
+        Map<String, List<String>> headers = processInstance.getHeaders();
+        if (headers != null && !headers.isEmpty()) {
+            Map<String, String> contextMap = convertHeadersToContextMap(headers);
+            if (!contextMap.isEmpty()) {
+                org.kie.kogito.services.context.ProcessInstanceContext.setContextFromAsync(contextMap);

Review Comment:
   Above I pointed out let's say one execution pat, but I was referring to the invocation of MDC.setContextMap(theNewValues);  in general. 
   
   When we do this invocaton, whatever value in the MDC context is cleared, and now, it has theNewValues.
   But, how do we know if the caller Thread has values stored in the MDC context, imagine IDK, kogitoTransactionID=1234 that we shouldn't clear?
   
   Something like this:
   1-) In the caller Thread, the execution flow produces this:
        A "kogito" method starts (or any other api)
        MDC.put("kogitoTransactionID", "1234")  //for whatever reason, eventually another API in the middle.
   2-) Now, the execution flow, reaches this invocation: (for whatever reason)
        ProcessInstanceContext.setContextFromAsync(theNewValues).     
   3-) Now the "kogito" medhod continues
        The method expects that "kogitoTransactionID"="1234"  is still in the MDC context, but this value was cleared as a side effect of the invocation in 2)



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gabriel-farache (via GitHub)" <gi...@apache.org>.
gabriel-farache commented on code in PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#discussion_r2588610278


##########
jbpm/jbpm-flow/src/main/java/org/kie/kogito/process/impl/AbstractProcessInstance.java:
##########
@@ -225,9 +226,35 @@ protected void reconnect() {
         }
         getProcessRuntime().getProcessInstanceManager().setLock(((MutableProcessInstances<T>) process.instances()).lock());
         processInstance.setMetaData(KOGITO_PROCESS_INSTANCE, this);
+
+        restoreProcessInstanceContext();
+
         processInstance.reconnect();
     }
 
+    private void restoreProcessInstanceContext() {
+        Map<String, List<String>> headers = processInstance.getHeaders();
+        if (headers != null && !headers.isEmpty()) {
+            Map<String, String> contextMap = convertHeadersToContextMap(headers);
+            if (!contextMap.isEmpty()) {
+                org.kie.kogito.services.context.ProcessInstanceContext.setContextFromAsync(contextMap);

Review Comment:
   Ah! yes, you are right; I was too focused on inter-thread interaction that it slipped my mind that even within the same thread, this could be called by another part of the code which will result in context loss
   
   Let me add
   ```
   Map<String, String> currentMdc = MDC.getCopyOfContextMap();
         if (currentMdc != null) {
           contextMap.putAll(currentMdc); // Preserve existing
         }
   ```
   in the top of `setContextFromAsync` to save the MDC already present
   This will not prevent previous data to be overwritten though if keys are shared which leads me to wonder if I should only restore extension related data and not touch the core ones
   Does it make sense to do
   ```
     for (Map.Entry<String, String> entry : contextMap.entrySet()) {
         MDC.put(entry.getKey(), entry.getValue());
     }
   ```
    instead so we only takes what's in the headers without touching the core data



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "wmedvede (via GitHub)" <gi...@apache.org>.
wmedvede commented on code in PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#discussion_r2588389657


##########
jbpm/jbpm-flow/src/main/java/org/kie/kogito/process/impl/AbstractProcessInstance.java:
##########
@@ -225,9 +226,35 @@ protected void reconnect() {
         }
         getProcessRuntime().getProcessInstanceManager().setLock(((MutableProcessInstances<T>) process.instances()).lock());
         processInstance.setMetaData(KOGITO_PROCESS_INSTANCE, this);
+
+        restoreProcessInstanceContext();
+
         processInstance.reconnect();
     }
 
+    private void restoreProcessInstanceContext() {
+        Map<String, List<String>> headers = processInstance.getHeaders();
+        if (headers != null && !headers.isEmpty()) {
+            Map<String, String> contextMap = convertHeadersToContextMap(headers);
+            if (!contextMap.isEmpty()) {
+                org.kie.kogito.services.context.ProcessInstanceContext.setContextFromAsync(contextMap);

Review Comment:
   yes, and along an execution flow in the same thread, I think we can have this situation:
   
   ```
   method1() 
       put m1Key=1 in the MDC
   
       call method2() 
            put m2Key=2 in the MDC
   
            call method3()
                 do MDC.setContextMap(newMap)
                 the context in the Thread local was now set to newMap, m1Key and m2Key aren't in the newMap
            end 
     
            method2 continues, but has lost m2Key
   
         end
   
         method1 continues, but has lost m1Key
   end
   
   ```
      
   
   
   
   



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gabriel-farache (via GitHub)" <gi...@apache.org>.
gabriel-farache commented on code in PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#discussion_r2589298536


##########
jbpm/jbpm-flow/src/main/java/org/kie/kogito/process/impl/AbstractProcessInstance.java:
##########
@@ -225,9 +226,35 @@ protected void reconnect() {
         }
         getProcessRuntime().getProcessInstanceManager().setLock(((MutableProcessInstances<T>) process.instances()).lock());
         processInstance.setMetaData(KOGITO_PROCESS_INSTANCE, this);
+
+        restoreProcessInstanceContext();
+
         processInstance.reconnect();
     }
 
+    private void restoreProcessInstanceContext() {
+        Map<String, List<String>> headers = processInstance.getHeaders();
+        if (headers != null && !headers.isEmpty()) {
+            Map<String, String> contextMap = convertHeadersToContextMap(headers);
+            if (!contextMap.isEmpty()) {
+                org.kie.kogito.services.context.ProcessInstanceContext.setContextFromAsync(contextMap);

Review Comment:
   ok I ended up with something a bit more complex with merge but that should be better



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gabriel-farache (via GitHub)" <gi...@apache.org>.
gabriel-farache commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3607924764

   @wmedvede So I need to move the Otel code from quarkus/extensions/kogito-quarkus-serverless-workflow-otel-extension to  addons/common/openTelemetry (with package name changed from sonataflow-quarkus-otel to addons-sonataflow-otel)?


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "pkliczewski (via GitHub)" <gi...@apache.org>.
pkliczewski commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3738756663

   @wmedvede is there anything else you would like @gabriel-farache to do to finalize this PR?


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "fjtirado (via GitHub)" <gi...@apache.org>.
fjtirado merged PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "kie-ci3 (via GitHub)" <gi...@apache.org>.
kie-ci3 commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3553570655

   
   **PR job** `#18` was: **UNSTABLE**
   Possible explanation: This should be test failures
   
   
   <details>
   <summary><b>Reproducer</b></summary>
   
   
   
   build-chain build full_downstream  -f 'https://raw.githubusercontent.com/${AUTHOR:apache}/incubator-kie-kogito-pipelines/${BRANCH:main}/.ci/buildchain-config-pr-cdb.yaml' -o 'bc' -p apache/incubator-kie-kogito-runtimes -u https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094 --skipParallelCheckout
   
   NOTE: To install the build-chain tool, please refer to https://github.com/kiegroup/github-action-build-chain#local-execution
   
   </details>
   
   
   Please look here: https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/18/display/redirect
   
   **Test results:**
   - PASSED: 2719
   - FAILED: 1
   
   Those are the test failures: 
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/18/testReport/org.kie.kogito.quarkus.token.persistence.workflows/TokenExchangeIT/tokenExchange/">org.kie.kogito.quarkus.token.persistence.workflows.TokenExchangeIT.tokenExchange</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "ricardozanini (via GitHub)" <gi...@apache.org>.
ricardozanini commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3553622720

   @gabriel-farache sorry I haven't seen this PR until you marked me in your last comment.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gabriel-farache (via GitHub)" <gi...@apache.org>.
gabriel-farache commented on code in PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#discussion_r2572348788


##########
kogito-bom/pom.xml:
##########
@@ -2702,6 +2702,38 @@
         <artifactId>sonataflow-quarkus-deployment</artifactId>
         <version>${project.version}</version>
       </dependency>
+      <dependency>
+          <groupId>org.apache.kie.sonataflow</groupId>
+          <artifactId>sonataflow-quarkus-jdbc-token-persistence</artifactId>

Review Comment:
   yes it was missed in the kogito in one of my previous PR, I just took on the opportunity to add it here as well, if it bothers you I can open a separate PR



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [NO-ISSUE] Implement process instance aware logging and context management [incubator-kie-kogito-runtimes]

Posted by "kie-ci3 (via GitHub)" <gi...@apache.org>.
kie-ci3 commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3431967607

   
   **PR job** `#10` was: **UNSTABLE**
   Possible explanation: This should be test failures
   
   
   <details>
   <summary><b>Reproducer</b></summary>
   
   
   
   build-chain build full_downstream  -f 'https://raw.githubusercontent.com/${AUTHOR:apache}/incubator-kie-kogito-pipelines/${BRANCH:main}/.ci/buildchain-config-pr-cdb.yaml' -o 'bc' -p apache/incubator-kie-kogito-runtimes -u https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094 --skipParallelCheckout
   
   NOTE: To install the build-chain tool, please refer to https://github.com/kiegroup/github-action-build-chain#local-execution
   
   </details>
   
   
   Please look here: https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/10/display/redirect
   
   **Test results:**
   - PASSED: 3705
   - FAILED: 3
   
   Those are the test failures: 
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/10/testReport/org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it/KnativeServingAddonIT/___/">org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it.KnativeServingAddonIT.(?)</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:351)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:322)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:336)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:556)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:346)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:909)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:492)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/10/testReport/org.kie.kogito.addons.quarkus.kubernetes/ConfigValueExpanderIT/test/">org.kie.kogito.addons.quarkus.kubernetes.ConfigValueExpanderIT.test</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:351)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:322)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:336)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:556)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:346)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:909)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:492)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/10/testReport/org.kie.kogito.quarkus.token.persistence.workflows/TokenExchangeIT/tokenExchange/">org.kie.kogito.quarkus.token.persistence.workflows.TokenExchangeIT.tokenExchange</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:351)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:322)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:336)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:556)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:346)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:909)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:492)<br/> ... 18 more<br/>
   </details>
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [NO-ISSUE] Implement process instance aware logging and context management [incubator-kie-kogito-runtimes]

Posted by "kie-ci3 (via GitHub)" <gi...@apache.org>.
kie-ci3 commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3406065238

   
   **PR job** `#5` was: **UNSTABLE**
   Possible explanation: This should be test failures
   
   
   <details>
   <summary><b>Reproducer</b></summary>
   
   
   
   build-chain build full_downstream  -f 'https://raw.githubusercontent.com/${AUTHOR:apache}/incubator-kie-kogito-pipelines/${BRANCH:main}/.ci/buildchain-config-pr-cdb.yaml' -o 'bc' -p apache/incubator-kie-kogito-runtimes -u https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094 --skipParallelCheckout
   
   NOTE: To install the build-chain tool, please refer to https://github.com/kiegroup/github-action-build-chain#local-execution
   
   </details>
   
   
   Please look here: https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/5/display/redirect
   
   **Test results:**
   - PASSED: 3667
   - FAILED: 4
   
   Those are the test failures: 
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/5/testReport/org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it/KnativeServingAddonIT/___/">org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it.KnativeServingAddonIT.(?)</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:351)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:322)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:336)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:556)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:346)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:909)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:492)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/5/testReport/org.kie.kogito.addons.quarkus.kubernetes/ConfigValueExpanderIT/test/">org.kie.kogito.addons.quarkus.kubernetes.ConfigValueExpanderIT.test</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:351)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:322)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:336)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:556)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:346)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:909)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:492)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/5/testReport/org.kie.kogito.quarkus.workflows/ProcessInstanceLoggingIT/testGeneralContextInNonProcessLogs/">org.kie.kogito.quarkus.workflows.ProcessInstanceLoggingIT.testGeneralContextInNonProcessLogs</a></summary>
   [Should have general context logs] <br/>Expecting actual:<br/>  0L<br/>to be greater than:<br/>  0L<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/5/testReport/org.kie.kogito.quarkus.token.persistence.workflows/TokenExchangeIT/tokenExchange/">org.kie.kogito.quarkus.token.persistence.workflows.TokenExchangeIT.tokenExchange</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:351)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:322)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:336)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:556)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:346)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:909)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:492)<br/> ... 18 more<br/>
   </details>
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [NO-ISSUE] Implement process instance aware logging and context management [incubator-kie-kogito-runtimes]

Posted by "kie-ci3 (via GitHub)" <gi...@apache.org>.
kie-ci3 commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3410956495

   
   **PR job** `#7` was: **UNSTABLE**
   Possible explanation: This should be test failures
   
   
   <details>
   <summary><b>Reproducer</b></summary>
   
   
   
   build-chain build full_downstream  -f 'https://raw.githubusercontent.com/${AUTHOR:apache}/incubator-kie-kogito-pipelines/${BRANCH:main}/.ci/buildchain-config-pr-cdb.yaml' -o 'bc' -p apache/incubator-kie-kogito-runtimes -u https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094 --skipParallelCheckout
   
   NOTE: To install the build-chain tool, please refer to https://github.com/kiegroup/github-action-build-chain#local-execution
   
   </details>
   
   
   Please look here: https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/7/display/redirect
   
   **Test results:**
   - PASSED: 3682
   - FAILED: 3
   
   Those are the test failures: 
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/7/testReport/org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it/KnativeServingAddonIT/___/">org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it.KnativeServingAddonIT.(?)</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:351)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:322)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:336)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:556)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:346)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:909)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:492)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/7/testReport/org.kie.kogito.addons.quarkus.kubernetes/ConfigValueExpanderIT/test/">org.kie.kogito.addons.quarkus.kubernetes.ConfigValueExpanderIT.test</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:351)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:322)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:336)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:556)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:346)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:909)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:492)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/7/testReport/org.kie.kogito.quarkus.token.persistence.workflows/TokenExchangeIT/tokenExchange/">org.kie.kogito.quarkus.token.persistence.workflows.TokenExchangeIT.tokenExchange</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:351)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:322)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:336)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:556)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:346)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:909)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:492)<br/> ... 18 more<br/>
   </details>
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gabriel-farache (via GitHub)" <gi...@apache.org>.
gabriel-farache commented on code in PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#discussion_r2576312158


##########
kogito-bom/pom.xml:
##########
@@ -2702,6 +2702,38 @@
         <artifactId>sonataflow-quarkus-deployment</artifactId>
         <version>${project.version}</version>
       </dependency>
+      <dependency>
+          <groupId>org.apache.kie.sonataflow</groupId>
+          <artifactId>sonataflow-quarkus-jdbc-token-persistence</artifactId>

Review Comment:
   Yes, I completely understand, the PR si splitted and I created https://github.com/apache/incubator-kie-kogito-runtimes/pull/4137 to add the dependency in the bom



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "wmedvede (via GitHub)" <gi...@apache.org>.
wmedvede commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3666695004

   @gabriel-farache thanks for the explanations.
   
   Going back to the filtering and the spans nesting, I'm not sure that current nesting reflects the WF execution itself.
   
   Lets forget about the filtering and se the steps only:
   
   Imagine we have a WF like this:
   
   Step1 -> Step2 -> Step3.
   
   So, with the current modeling the following is being created:
   
   Trace: POST / greet 
         ->  Span1 (for step1)
              -> Span2 (for step2)
                  -> Span3 (for step3)
                  
   So what we are saying is that e.g. step2 executes "inside" step1, and step3 executes "inside" step2.
   But, the execution of these steps is basically independent.
   
   I think that instead, from the logical point of view, something like this models the better the execution:
   
   Trace: POST / greet 
       -> Span1 (for step1)
       -> Span2 (for step2)
       -> Span3 (for step3)
   
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gabriel-farache (via GitHub)" <gi...@apache.org>.
gabriel-farache commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3666855455

   @wmedvede About the Span relationship, each span has its parent span, it's a parent-child relationship that allow the user, in the end,  to have the execution path; to know which span was executed first and last, I do not see it as "inside" but more of "chained", maybe I am wrong here.
   I guess we would remove the parent span relationship to flatten that, is that what you mean?
   
   As for the filtering, I am not sure I am following: for each node "internal" we should look into the "state" metadata and merge the meatadata and attribute inside the current span is the current and previous "state" values are the same? Did I get that right?


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gabriel-farache (via GitHub)" <gi...@apache.org>.
gabriel-farache commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3660054919

   @wmedvede 
   <img width="540" height="112" alt="image" src="https://github.com/user-attachments/assets/399ecca1-b459-4baa-800b-9b5ffdd3f9da" />
   <img width="758" height="366" alt="image" src="https://github.com/user-attachments/assets/101f26e8-2ccd-4d0c-b329-09aae0f08df4" />
   See above that for 1 trace there are 4 spans so that's OK. But we should have more than that.
   
   The wrong amount of spans created is due to filtering of the internal nodes https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094/files#diff-eb172ba601dbf0e7569152677c85d44d34427d18239c103808ca20a6b50f59c0R138-R142 to avoid "noises" and onyl having "real" nodes, but I see now that this will cause confusion and introduce inconsistency, I'll remove this filtering and deal in absolute here. 
   Take a look again because it seems very very verbose now, even the script/function execution have their own span, maybe I should at least exclude those one? Or let it be configurable in the properties?
   
   For the `node.completed`, I fixed it.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "kie-ci3 (via GitHub)" <gi...@apache.org>.
kie-ci3 commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3711901705

   
   **PR job** `#42` was: **UNSTABLE**
   Possible explanation: This should be test failures
   
   
   <details>
   <summary><b>Reproducer</b></summary>
   
   
   
   build-chain build full_downstream  -f 'https://raw.githubusercontent.com/${AUTHOR:apache}/incubator-kie-kogito-pipelines/${BRANCH:main}/.ci/buildchain-config-pr-cdb.yaml' -o 'bc' -p apache/incubator-kie-kogito-runtimes -u https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094 --skipParallelCheckout
   
   NOTE: To install the build-chain tool, please refer to https://github.com/kiegroup/github-action-build-chain#local-execution
   
   </details>
   
   
   Please look here: https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/42/display/redirect
   
   **Test results:**
   - PASSED: 3838
   - FAILED: 8
   
   Those are the test failures: 
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/42/testReport/org.kie.kogito.addons.jwt.it/JwtParserIT/testJwtParserWorkflowEndToEnd/">org.kie.kogito.addons.jwt.it.JwtParserIT.testJwtParserWorkflowEndToEnd</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/42/testReport/org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it/KnativeServingAddonIT/___/">org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it.KnativeServingAddonIT.(?)</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/42/testReport/org.kie.kogito.addons.quarkus.kubernetes/ConfigValueExpanderIT/test/">org.kie.kogito.addons.quarkus.kubernetes.ConfigValueExpanderIT.test</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/42/testReport/org.kie.kogito.quarkus.serverless.workflow.opentelemetry/OpenTelemetryLoggingIT/shouldCaptureExternalLibraryLogs/">org.kie.kogito.quarkus.serverless.workflow.opentelemetry.OpenTelemetryLoggingIT.shouldCaptureExternalLibraryLogs</a></summary>
   Assertion condition defined as a Lambda expression in org.kie.kogito.quarkus.serverless.workflow.opentelemetry.OpenTelemetryLoggingIT <br/>Expecting actual not to be empty within 30 seconds.
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/42/testReport/org.kie.kogito.quarkus.serverless.workflow.opentelemetry/OpenTelemetryLoggingIT/shouldCaptureLogMessagesAsSpanEventsWithTokenPropagation/">org.kie.kogito.quarkus.serverless.workflow.opentelemetry.OpenTelemetryLoggingIT.shouldCaptureLogMessagesAsSpanEventsWithTokenPropagation</a></summary>
   Assertion condition defined as a Lambda expression in org.kie.kogito.quarkus.serverless.workflow.opentelemetry.OpenTelemetryLoggingIT <br/>Expecting actual not to be empty within 25 seconds.
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/42/testReport/org.kie.kogito.quarkus.serverless.workflow.opentelemetry/OpenTelemetryLoggingIT/shouldCaptureLogMessagesAsSpanEvents/">org.kie.kogito.quarkus.serverless.workflow.opentelemetry.OpenTelemetryLoggingIT.shouldCaptureLogMessagesAsSpanEvents</a></summary>
   Index 0 out of bounds for length 0
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/42/testReport/org.kie.kogito.quarkus.serverless.workflow.opentelemetry/OpenTelemetryLoggingIT/shouldCorrelateLogsWithProcessInstance/">org.kie.kogito.quarkus.serverless.workflow.opentelemetry.OpenTelemetryLoggingIT.shouldCorrelateLogsWithProcessInstance</a></summary>
   Assertion condition defined as a Lambda expression in org.kie.kogito.quarkus.serverless.workflow.opentelemetry.OpenTelemetryLoggingIT log.message events not found in Spanish workflow within 15 seconds.
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/42/testReport/org.kie.kogito.quarkus.token.persistence.workflows/TokenExchangeIT/tokenExchange/">org.kie.kogito.quarkus.token.persistence.workflows.TokenExchangeIT.tokenExchange</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "kie-ci3 (via GitHub)" <gi...@apache.org>.
kie-ci3 commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3729145467

   
   **PR job** `#50` was: **UNSTABLE**
   Possible explanation: This should be test failures
   
   
   <details>
   <summary><b>Reproducer</b></summary>
   
   
   
   build-chain build full_downstream  -f 'https://raw.githubusercontent.com/${AUTHOR:apache}/incubator-kie-kogito-pipelines/${BRANCH:main}/.ci/buildchain-config-pr-cdb.yaml' -o 'bc' -p apache/incubator-kie-kogito-runtimes -u https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094 --skipParallelCheckout
   
   NOTE: To install the build-chain tool, please refer to https://github.com/kiegroup/github-action-build-chain#local-execution
   
   </details>
   
   
   Please look here: https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/50/display/redirect
   
   **Test results:**
   - PASSED: 3821
   - FAILED: 5
   
   Those are the test failures: 
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/50/testReport/org.kie.kogito.addons.jwt.it/JwtParserIT/testJwtParserWorkflowEndToEnd/">org.kie.kogito.addons.jwt.it.JwtParserIT.testJwtParserWorkflowEndToEnd</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/50/testReport/org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it/KnativeServingAddonIT/___/">org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it.KnativeServingAddonIT.(?)</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/50/testReport/org.kie.kogito.addons.quarkus.kubernetes/ConfigValueExpanderIT/test/">org.kie.kogito.addons.quarkus.kubernetes.ConfigValueExpanderIT.test</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/50/testReport/org.kie.kogito.quarkus.token.persistence.workflows/TokenExchangeIT/tokenExchange/">org.kie.kogito.quarkus.token.persistence.workflows.TokenExchangeIT.tokenExchange</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/50/testReport/org.kie.kogito.integrationtests.quarkus/TaskIT/testUpdateTaskInfo/">org.kie.kogito.integrationtests.quarkus.TaskIT.testUpdateTaskInfo</a></summary>
   1 expectation failed.<br/>Expected status code <403> but was <200>.<br/>
   </details>
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "kie-ci3 (via GitHub)" <gi...@apache.org>.
kie-ci3 commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3725120336

   
   **PR job** `#47` was: **UNSTABLE**
   Possible explanation: This should be test failures
   
   
   <details>
   <summary><b>Reproducer</b></summary>
   
   
   
   build-chain build full_downstream  -f 'https://raw.githubusercontent.com/${AUTHOR:apache}/incubator-kie-kogito-pipelines/${BRANCH:main}/.ci/buildchain-config-pr-cdb.yaml' -o 'bc' -p apache/incubator-kie-kogito-runtimes -u https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094 --skipParallelCheckout
   
   NOTE: To install the build-chain tool, please refer to https://github.com/kiegroup/github-action-build-chain#local-execution
   
   </details>
   
   
   Please look here: https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/47/display/redirect
   
   **Test results:**
   - PASSED: 3821
   - FAILED: 5
   
   Those are the test failures: 
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/47/testReport/org.kie.kogito.addons.jwt.it/JwtParserIT/testJwtParserWorkflowEndToEnd/">org.kie.kogito.addons.jwt.it.JwtParserIT.testJwtParserWorkflowEndToEnd</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/47/testReport/org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it/KnativeServingAddonIT/___/">org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it.KnativeServingAddonIT.(?)</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/47/testReport/org.kie.kogito.addons.quarkus.kubernetes/ConfigValueExpanderIT/test/">org.kie.kogito.addons.quarkus.kubernetes.ConfigValueExpanderIT.test</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/47/testReport/org.kie.kogito.addon.quarkus.messaging.common/QuarkusEventThreadPoolTest/testQuarkusEventThreadPoolMultiThreadLongQueueTest/">org.kie.kogito.addon.quarkus.messaging.common.QuarkusEventThreadPoolTest.testQuarkusEventThreadPoolMultiThreadLongQueueTest</a></summary>
   expected: <10000> but was: <9999>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/47/testReport/org.kie.kogito.quarkus.token.persistence.workflows/TokenExchangeIT/tokenExchange/">org.kie.kogito.quarkus.token.persistence.workflows.TokenExchangeIT.tokenExchange</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gabriel-farache (via GitHub)" <gi...@apache.org>.
gabriel-farache commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3687853245

   @fjtirado @wmedvede I tried using `UnitOfWorkEventListener` to only have 1 span for each UnitOfWork but it is not giving good results; the span is only created and closed when receiving an end or abort event and I need to have a custom class extending `CollectingUnitOfWork` to have in memory the WorkUnit executed to get the processinstanceId.
   I think this will not work, or at least not as easily and nicely as what we currently have with 1 node == 1 span (so the long mode)
   Would that be OK for 1st version? Based on feedback this can be changed but it better have motivation behind it


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "kie-ci3 (via GitHub)" <gi...@apache.org>.
kie-ci3 commented on PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#issuecomment-3688273291

   
   **PR job** `#40` was: **UNSTABLE**
   Possible explanation: This should be test failures
   
   
   <details>
   <summary><b>Reproducer</b></summary>
   
   
   
   build-chain build full_downstream  -f 'https://raw.githubusercontent.com/${AUTHOR:apache}/incubator-kie-kogito-pipelines/${BRANCH:main}/.ci/buildchain-config-pr-cdb.yaml' -o 'bc' -p apache/incubator-kie-kogito-runtimes -u https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094 --skipParallelCheckout
   
   NOTE: To install the build-chain tool, please refer to https://github.com/kiegroup/github-action-build-chain#local-execution
   
   </details>
   
   
   Please look here: https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/40/display/redirect
   
   **Test results:**
   - PASSED: 3834
   - FAILED: 8
   
   Those are the test failures: 
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/40/testReport/org.kie.kogito.addons.jwt.it/JwtParserIT/testJwtParserWorkflowEndToEnd/">org.kie.kogito.addons.jwt.it.JwtParserIT.testJwtParserWorkflowEndToEnd</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/40/testReport/org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it/KnativeServingAddonIT/___/">org.kie.kogito.addons.quarkus.knative.serving.customfunctions.it.KnativeServingAddonIT.(?)</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/40/testReport/org.kie.kogito.addons.quarkus.kubernetes/ConfigValueExpanderIT/test/">org.kie.kogito.addons.quarkus.kubernetes.ConfigValueExpanderIT.test</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/40/testReport/org.kie.kogito.quarkus.serverless.workflow.opentelemetry/OpenTelemetryLoggingIT/shouldCaptureExternalLibraryLogs/">org.kie.kogito.quarkus.serverless.workflow.opentelemetry.OpenTelemetryLoggingIT.shouldCaptureExternalLibraryLogs</a></summary>
   Assertion condition defined as a Lambda expression in org.kie.kogito.quarkus.serverless.workflow.opentelemetry.OpenTelemetryLoggingIT <br/>Expecting actual not to be empty within 30 seconds.
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/40/testReport/org.kie.kogito.quarkus.serverless.workflow.opentelemetry/OpenTelemetryLoggingIT/shouldCaptureLogMessagesAsSpanEventsWithTokenPropagation/">org.kie.kogito.quarkus.serverless.workflow.opentelemetry.OpenTelemetryLoggingIT.shouldCaptureLogMessagesAsSpanEventsWithTokenPropagation</a></summary>
   Assertion condition defined as a Lambda expression in org.kie.kogito.quarkus.serverless.workflow.opentelemetry.OpenTelemetryLoggingIT <br/>Expecting actual not to be empty within 25 seconds.
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/40/testReport/org.kie.kogito.quarkus.serverless.workflow.opentelemetry/OpenTelemetryLoggingIT/shouldCaptureLogMessagesAsSpanEvents/">org.kie.kogito.quarkus.serverless.workflow.opentelemetry.OpenTelemetryLoggingIT.shouldCaptureLogMessagesAsSpanEvents</a></summary>
   Index 0 out of bounds for length 0
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/40/testReport/org.kie.kogito.quarkus.serverless.workflow.opentelemetry/OpenTelemetryLoggingIT/shouldCorrelateLogsWithProcessInstance/">org.kie.kogito.quarkus.serverless.workflow.opentelemetry.OpenTelemetryLoggingIT.shouldCorrelateLogsWithProcessInstance</a></summary>
   Assertion condition defined as a Lambda expression in org.kie.kogito.quarkus.serverless.workflow.opentelemetry.OpenTelemetryLoggingIT log.message events not found in Spanish workflow within 15 seconds.
   </details>
   <details>
   <summary><a href="https://ci-builds.apache.org/job/KIE/job/kogito/job/main/job/pullrequest_jobs/job/kogito-runtimes-pr/job/PR-4094/40/testReport/org.kie.kogito.quarkus.token.persistence.workflows/TokenExchangeIT/tokenExchange/">org.kie.kogito.quarkus.token.persistence.workflows.TokenExchangeIT.tokenExchange</a></summary>
   java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors<br/> [error]: Build step io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor#startKeycloakContainer threw an exception: java.lang.RuntimeException: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:250)<br/> at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)<br/> at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)<br/> at io.quarkus.builder.BuildContext.run(BuildContext.java:255)<br/> at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)<br/> at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQu
 eueExecutor.java:2654)<br/> at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)<br/> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)<br/> at java.base/java.lang.Thread.run(Thread.java:840)<br/> at org.jboss.threads.JBossThread.run(JBossThread.java:499)<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image quay.io/keycloak/keycloak:26.1.3<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)<br/> at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.lambda$startContainer$4(KeycloakDevServicesProcessor.java:421)<br/> at java.base/java.util.Optional.orElseGet(Optional.java:364)<br/> at io.quarkus.devservices.keycloak.KeycloakDevServicesProcessor.startContainer(KeycloakDevServicesProcessor.java:447)<br/> at io.quarkus.devser
 vices.keycloak.KeycloakDevServicesProcessor.startKeycloakContainer(KeycloakDevServicesProcessor.java:200)<br/> ... 10 more<br/>Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)<br/> at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)<br/> ... 15 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)<br/> at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)<br/> at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)<br/> ... 16 more<br/>Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Keycloak.*started.*'<br/> at org.testcontainers.containers.wait
 .strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)<br/> at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)<br/> at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:904)<br/> at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:487)<br/> ... 18 more<br/>
   </details>
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gabriel-farache (via GitHub)" <gi...@apache.org>.
gabriel-farache commented on code in PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#discussion_r2581627897


##########
kogito-test-utils/src/main/java/org/kie/kogito/test/utils/ProcessInstanceLoggingTestBase.java:
##########
@@ -0,0 +1,244 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.kie.kogito.test.utils;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.time.Duration;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import io.restassured.http.ContentType;
+
+import static io.restassured.RestAssured.given;
+import static org.awaitility.Awaitility.await;
+
+/**
+ * Base class for process instance logging tests providing common functionality.
+ * This class eliminates code duplication between different logging test implementations.
+ */
+public abstract class ProcessInstanceLoggingTestBase {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(ProcessInstanceLoggingTestBase.class);
+
+    /**
+     * Get the configured log file path.
+     *
+     * @return Path to the Quarkus log file
+     */
+    protected Path getLogFilePath() {
+        String logPath = System.getProperty("quarkus.log.file.path", "target/quarkus.log");
+        return Paths.get(logPath);
+    }
+
+    /**
+     * Get all log files including rotated ones in chronological order (newest first).
+     * Handles Quarkus default rotation: quarkus.log, quarkus.log.1, quarkus.log.2, etc.
+     *
+     * @return List of log file paths sorted by modification time (newest first)
+     * @throws IOException if directory access fails
+     */
+    protected List<Path> getAllLogFiles() throws IOException {
+        Path logFile = getLogFilePath();
+        Path logDir = logFile.getParent();
+        String baseName = logFile.getFileName().toString();
+
+        List<Path> logFiles = new ArrayList<>();
+
+        // Add main log file if it exists
+        if (Files.exists(logFile)) {
+            logFiles.add(logFile);
+        }
+
+        // Look for rotated files: baseName.1, baseName.2, etc.
+        for (int i = 1; i <= 10; i++) { // Check up to 10 rotated files (more than default max-backup-index=5)
+            Path rotatedFile = logDir.resolve(baseName + "." + i);
+            if (Files.exists(rotatedFile)) {
+                logFiles.add(rotatedFile);
+            }
+        }
+
+        // Sort by last modified time (newest first) to ensure we read logs in chronological order
+        logFiles.sort((p1, p2) -> {
+            try {
+                return Files.getLastModifiedTime(p2).compareTo(Files.getLastModifiedTime(p1));
+            } catch (IOException e) {
+                return 0; // Keep original order if we can't compare
+            }
+        });
+
+        LOGGER.debug("Found {} log files: {}", logFiles.size(), logFiles);
+        return logFiles;
+    }
+
+    /**
+     * Clear a specific log file to start with a clean slate.
+     *
+     * Warning: If your test uses getAllLogFiles() or parseAllLogFiles() methods later,
+     * consider using clearAllLogFiles() instead to avoid inconsistent results from
+     * rotated log files.
+     *
+     * @param logFile Path to the log file
+     * @throws IOException if file operations fail
+     */
+    protected void clearLogFile(Path logFile) throws IOException {
+        if (Files.exists(logFile)) {
+            Files.write(logFile, new byte[0]);
+        }
+    }
+
+    /**
+     * Clear all log files including rotated ones to start with a clean slate.
+     * This ensures we don't have stale logs from previous test runs affecting current test.
+     *
+     * This is the recommended method for test setup when using getAllLogFiles() or
+     * parseAllLogFiles() methods to ensure consistent results.
+     *
+     * @throws IOException if file operations fail
+     */
+    protected void clearAllLogFiles() throws IOException {
+        try {
+            List<Path> logFiles = getAllLogFiles();
+            for (Path logFile : logFiles) {
+                if (Files.exists(logFile)) {
+                    Files.write(logFile, new byte[0]);
+                    LOGGER.debug("Cleared log file: {}", logFile);
+                }
+            }
+            LOGGER.info("Cleared {} log files", logFiles.size());
+        } catch (IOException e) {
+            LOGGER.warn("Failed to clear some log files: {}", e.getMessage());
+            // Don't fail the test, just warn
+        }
+    }
+
+    /**
+     * Wait for logs to be flushed to disk.
+     *
+     * @throws InterruptedException if thread is interrupted
+     */
+    protected void waitForLogFlush() throws InterruptedException {
+        // Increase default wait time for CI environments
+        long waitTime = isRunningInCI() ? 3000 : 1000;
+        Thread.sleep(waitTime);
+    }
+
+    /**
+     * Wait for logs to be flushed to disk with custom duration.
+     *
+     * @param millis milliseconds to wait
+     * @throws InterruptedException if thread is interrupted
+     */
+    protected void waitForLogFlush(long millis) throws InterruptedException {
+        // In CI environments, use at least the provided time or 2 seconds, whichever is higher
+        long actualWaitTime = isRunningInCI() ? Math.max(millis, 2000) : millis;
+        Thread.sleep(actualWaitTime);
+    }
+
+    /**
+     * Detect if running in CI environment based on common CI environment variables.
+     * 
+     * @return true if running in CI, false otherwise
+     */
+    protected boolean isRunningInCI() {
+        return System.getenv("CI") != null ||
+                System.getenv("JENKINS_URL") != null ||
+                System.getenv("GITHUB_ACTIONS") != null ||
+                System.getenv("TRAVIS") != null ||
+                System.getenv("CIRCLECI") != null ||
+                System.getProperty("ci.environment") != null;
+    }
+
+    /**
+     * Wait for workflow completion using polling.
+     *
+     * @param workflowPath REST path for the workflow
+     * @param processInstanceId Process instance ID
+     * @param timeout Maximum time to wait
+     */
+    protected void waitForWorkflowCompletion(String workflowPath, String processInstanceId, Duration timeout) {

Review Comment:
   good idea, I also updated the tests using it to validate it returns `true`



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gabriel-farache (via GitHub)" <gi...@apache.org>.
gabriel-farache commented on code in PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#discussion_r2585947949


##########
quarkus/addons/token-exchange/runtime/src/main/java/org/kie/kogito/addons/quarkus/token/exchange/cache/TokenEvictionHandler.java:
##########
@@ -96,28 +116,41 @@ private void onTokenExpired(String cacheKey, CachedTokens tokens, RemovalCause c
 
     /**
      * Refreshes tokens using a cached refresh token and updates the cache.
-     * 
+     * The process instance context is set based on the cache key.
+     *
      * @param cacheKey The cache key for the tokens being refreshed
      * @param refreshToken The refresh token to use for getting new tokens
      */
     private void refreshWithCachedToken(String cacheKey, String refreshToken) {
+        // Extract process instance ID from cache key for context propagation
+        String processInstanceId = CacheUtils.extractProcessInstanceIdFromCacheKey(cacheKey);
+
         tokenRefreshExecutor.submit(() -> {
             try {
+                ProcessInstanceContext.setProcessInstanceId(processInstanceId);

Review Comment:
   Here we are doing it again as it's done in a separate Thread so it's safer to set it explicitly to avoid race issue, what do you think?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "wmedvede (via GitHub)" <gi...@apache.org>.
wmedvede commented on code in PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#discussion_r2588395427


##########
jbpm/jbpm-flow/src/main/java/org/kie/kogito/process/impl/AbstractProcessInstance.java:
##########
@@ -225,9 +226,35 @@ protected void reconnect() {
         }
         getProcessRuntime().getProcessInstanceManager().setLock(((MutableProcessInstances<T>) process.instances()).lock());
         processInstance.setMetaData(KOGITO_PROCESS_INSTANCE, this);
+
+        restoreProcessInstanceContext();
+
         processInstance.reconnect();
     }
 
+    private void restoreProcessInstanceContext() {
+        Map<String, List<String>> headers = processInstance.getHeaders();
+        if (headers != null && !headers.isEmpty()) {
+            Map<String, String> contextMap = convertHeadersToContextMap(headers);
+            if (!contextMap.isEmpty()) {
+                org.kie.kogito.services.context.ProcessInstanceContext.setContextFromAsync(contextMap);

Review Comment:
   So, even when every request is served in a different thread, we don't govern how many methods was invocked during the request serving. 
   e.g. method1() and method2() we don't have control over who has called before reaching method3(). method3() is our feature..



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "wmedvede (via GitHub)" <gi...@apache.org>.
wmedvede commented on code in PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#discussion_r2588389657


##########
jbpm/jbpm-flow/src/main/java/org/kie/kogito/process/impl/AbstractProcessInstance.java:
##########
@@ -225,9 +226,35 @@ protected void reconnect() {
         }
         getProcessRuntime().getProcessInstanceManager().setLock(((MutableProcessInstances<T>) process.instances()).lock());
         processInstance.setMetaData(KOGITO_PROCESS_INSTANCE, this);
+
+        restoreProcessInstanceContext();
+
         processInstance.reconnect();
     }
 
+    private void restoreProcessInstanceContext() {
+        Map<String, List<String>> headers = processInstance.getHeaders();
+        if (headers != null && !headers.isEmpty()) {
+            Map<String, String> contextMap = convertHeadersToContextMap(headers);
+            if (!contextMap.isEmpty()) {
+                org.kie.kogito.services.context.ProcessInstanceContext.setContextFromAsync(contextMap);

Review Comment:
   yes, and along an execution flow in the same thread, I think we can have this situation:
   
   ```
   method1() 
       put m1Key=1 in the MDC
   
       call method2() 
            put m2Key=2 in the MDC
   
            call method3()
                 do MDC.setContextMap(newMap)
                 the context in the Thread local was now set to newMap, m1Key and m2Key aren't in the newMap
            end 
     
            method2 continues, but has lost m2Key
   
         end
   
         method3 continues, but has lost m1Key
   end
   
   ```
      
   
   
   
   



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


Re: [PR] [incubator-kie-issues#2146] Open telemetry support and process instance aware logging [incubator-kie-kogito-runtimes]

Posted by "gabriel-farache (via GitHub)" <gi...@apache.org>.
gabriel-farache commented on code in PR #4094:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/pull/4094#discussion_r2588101288


##########
jbpm/jbpm-flow/src/main/java/org/kie/kogito/process/impl/AbstractProcessInstance.java:
##########
@@ -225,9 +226,35 @@ protected void reconnect() {
         }
         getProcessRuntime().getProcessInstanceManager().setLock(((MutableProcessInstances<T>) process.instances()).lock());
         processInstance.setMetaData(KOGITO_PROCESS_INSTANCE, this);
+
+        restoreProcessInstanceContext();
+
         processInstance.reconnect();
     }
 
+    private void restoreProcessInstanceContext() {
+        Map<String, List<String>> headers = processInstance.getHeaders();
+        if (headers != null && !headers.isEmpty()) {
+            Map<String, String> contextMap = convertHeadersToContextMap(headers);
+            if (!contextMap.isEmpty()) {
+                org.kie.kogito.services.context.ProcessInstanceContext.setContextFromAsync(contextMap);

Review Comment:
   From my understanding MDC is managed per-thread (see https://logback.qos.ch/manual/mdc.html#AdvancedUse) so different requests will be served by different threads but I may be misleading here



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org