automatiko-io / automatiko-approval-task

Tekton Pipeline Custom task implementation to add approval capabilities into the pipelines
Apache License 2.0
44 stars 14 forks source link

email notification templates customization request #4

Closed hillbun closed 2 years ago

hillbun commented 2 years ago

I need to customize email notification templates, such as title, body

mswiderski commented 2 years ago

this one depends on change in automatiko https://github.com/automatiko-io/automatiko-engine/issues/280

mswiderski commented 2 years ago

the work is pretty much done, if you want to give it a try before it gets officially released (as it requires new release of automatiko - due by the end of next week) then try with this image mswiderski/automatiko-approval-task:0.4.0

Documentation how to make use of it is here: https://github.com/automatiko-io/automatiko-approval-task#customize-email-templates

hillbun commented 2 years ago

where is the demo of approval-email.html?

mswiderski commented 2 years ago

Here is the default email template https://github.com/automatiko-io/automatiko-approval-task/blob/main/src/main/resources/templates/approval-email.html

mswiderski commented 2 years ago

I plan to release Automatiko tomorrow and then approval task 0.4.0. have you tried to use custom email template?

hillbun commented 2 years ago

which tag of image should I use to try and test?

mswiderski commented 2 years ago

which tag of image should I use to try and test?

https://github.com/automatiko-io/automatiko-approval-task/issues/4#issuecomment-1221032269

hillbun commented 2 years ago

I get env inside pod of automatiko-approval-task

QUARKUS_AUTOMATIKO_TEMPLATES_FOLDER=/templates

but approve email body contents do not match /templates/approval-email.html , it is still default templates.

also I need to customize email title.

mswiderski commented 2 years ago

and you paste the config map you use (the actual content of the values are not important) just the structure of the config map. Then how it is mapped to the deployment so paste the deployment manifest as well.

When it comes to customise the email subject, I will look into it how it can be done.

hillbun commented 2 years ago

I mean cat /templates/approval-email.html

I customize:

Pipeline awaits approval - ABC.COM

But the email recieved, is Pipeline awaits approval

mswiderski commented 2 years ago

but how do you provide this template to the pod? It should be done via config map and then volume mapped to the deployment, have you done that?

hillbun commented 2 years ago
    spec:
      containers:
      - env:
        - name: KUBERNETES_NAMESPACE
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
        - name: QUARKUS_OPERATOR_SDK_NAMESPACES
          value: default
        - name: QUARKUS_AUTOMATIKO_SERVICE_URL
          value: http://automatiko-approval-task.default/
        - name: QUARKUS_MAILER_FROM
          value: xxxx
        - name: QUARKUS_MAILER_HOST
          value: xx
        - name: QUARKUS_MAILER_PORT
          value: "25"
        - name: QUARKUS_MAILER_USERNAME
          value: xxx
        - name: QUARKUS_MAILER_PASSWORD
          value: xxxx
        - name: QUARKUS_PROFILE
          value: withemail
        - name: QUARKUS_MAILER_START_TLS
          value: DISABLED
        - name: QUARKUS_AUTOMATIKO_TEMPLATES_FOLDER
          value: /templates
        image: automatiko/automatiko-approval-task
        imagePullPolicy: Always
        livenessProbe:
          failureThreshold: 3
          httpGet:
            path: /q/health/live
            port: 8080
            scheme: HTTP
          periodSeconds: 30
          successThreshold: 1
          timeoutSeconds: 10
        name: automatiko-approval-task
        ports:
        - containerPort: 8080
          name: http
          protocol: TCP
        readinessProbe:
          failureThreshold: 3
          httpGet:
            path: /q/health/ready
            port: 8080
            scheme: HTTP
          periodSeconds: 30
          successThreshold: 1
          timeoutSeconds: 10
        resources: {}
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts:
        - mountPath: /templates
          name: templates-volume
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      serviceAccount: automatiko-approval-task
      serviceAccountName: automatiko-approval-task
      terminationGracePeriodSeconds: 30
      volumes:
      - configMap:
          defaultMode: 420
          name: approval-task-templates
        name: templates-volume
mswiderski commented 2 years ago

you are using wrong image image: automatiko/automatiko-approval-task it should be image: mswiderski/automatiko-approval-task:0.4.0 as only the one from my repo has the latest changes.

Plus, how does the config map looks like - named approval-task-templates? What entires does it have?

hillbun commented 2 years ago

it is ok now.

mswiderski commented 2 years ago

so now the email template is taken from config map, right?

and last remaining issue is the email subject? Is there anything else you need to customise there?

hillbun commented 2 years ago

I need to pass task params to email subject

mswiderski commented 2 years ago

what parameters are required there?

hillbun commented 2 years ago
                    - name: deploy-dev-approval-task
                      taskRef:
                        apiVersion: tekton.automatiko.io/v1alpha1
                        kind: ApprovalTask
                        name: approvaltask
                      params:
                        - name: pipeline                                                                                                                    
                          value: "$(context.pipelineRun.name)"                                                                                              
                        - name: description                                                                                                                 
                          value: "Approval from pipeline $(context.pipeline.name)"                                                                          
                        - name: approvers                                                                                                                   
                          value:                                                                                                                            
                            - "xxx@xx.com" 
                        - name: foo
                          value:  "bar"

I set foo in task

mswiderski commented 2 years ago

you can use the 0.4.0 from mswiderski repo to try out to customise the email subject as well.

Fist and foremost is to apply the CRD from here https://github.com/automatiko-io/automatiko-approval-task/blob/main/k8s/approvaltasks.tekton.automatiko.io-v1.yml as there are new spec item introduced.

Then you can use these instructions to override default email subject https://github.com/automatiko-io/automatiko-approval-task#customize-email-templates

hillbun commented 2 years ago

I suggest customize email subject

- name: APPROVAL_TASK_EMAIL_SUBJECT
  value: "Here is an approval for {pipeline} waiting to be deployed to {environment}" 

move from automatiko-approval-task deployment environment to approval task params

hillbun commented 2 years ago
kubectl apply -f https://github.com/automatiko-io/automatiko-approval-task/blob/main/k8s/approvaltasks.tekton.automatiko.io-v1.yml
error: error parsing https://github.com/automatiko-io/automatiko-approval-task/blob/main/k8s/approvaltasks.tekton.automatiko.io-v1.yml: error converting YAML to JSON: yaml: line 28: mapping values are not allowed in this context
mswiderski commented 2 years ago

I suggest customize email subject

- name: APPROVAL_TASK_EMAIL_SUBJECT
  value: "Here is an approval for {pipeline} waiting to be deployed to {environment}" 

move from automatiko-approval-task deployment environment to approval task params

and how about already using the description param instead? Then there won't be any need to include new params. Though it will only allow you to reference context data from Tekton like "Approval from pipeline $(context.pipeline.name)"

all the variables will be directly expended to values by Tekton. Would this work for you?

mswiderski commented 2 years ago

kubectl apply -f https://github.com/automatiko-io/automatiko-approval-task/blob/main/k8s/approvaltasks.tekton.automatiko.io-v1.yml error: error parsing https://github.com/automatiko-io/automatiko-approval-task/blob/main/k8s/approvaltasks.tekton.automatiko.io-v1.yml: error converting YAML to JSON: yaml: line 28: mapping values are not allowed in this context

very weird as this line has not changed at all. Could you first remove the previous version and start from scratch?

hillbun commented 2 years ago

description param is ok to email sunject.

and approvaltasks.tekton.automatiko.io-v1.yml: upate ok now.

mswiderski commented 2 years ago

excellent, so I will never the need for the extended CRD and extra environment variable and rely on description.

Very good feedback @hillbun !!!

mswiderski commented 2 years ago

alright, new version of 0.4.0 is now pushed to mswiderski repo. Please take it for a test drive. Once you verify it does what is needed I will work on preparing releases so it will be ready in the official repo in a day or two.

hillbun commented 2 years ago

Yes, all tests pass

hillbun commented 2 years ago

in approval-email.html

<p style="-ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"><a href="{link}" class="btn btn-primary" style="-ms-text-size-a
djust: 100%; -webkit-text-size-adjust: 100%; text-decoration: none; padding: 10px 15px; display: inline-block; border-radius: 5px; background: #007bff; color: #ffffff;">Go to
 approval task</a></p>

I need to customize {link} , how to?

mswiderski commented 2 years ago

what do you mean by customise the link? Link is generated be the backend to ensure it can point to a valid task with proper credentials

hillbun commented 2 years ago

current link is

http://localhost:8080/management/tasks/link/c2luZ2xlfGQ1ZTVlY2VmLTY0MWQtMzk1MC05MTYyLTYzY2NkMWQzYjE2MjphODFkMjhlOS0zOWU5LTQxMTgtYjkxNS1iNjFmNTRmMzQ2Y2N8ODQ2NTM0MWYtNDJlYi00M2EyLTk0ZmYtOWQxZTk4NDYyOGUwfDQ5NTQyODg3NkBxcS5jb20=

I need to replace http://localhost:8080/ with env below, so I can click and visit what UI

        - name: QUARKUS_AUTOMATIKO_APPROVAL_URL
          value: http://automatiko-approval.xxxxx.com/
mswiderski commented 2 years ago

that is already there, you need to set it via env variable of the deployment:

- name: QUARKUS_AUTOMATIKO_SERVICE_URL
  value: http://automatiko-approval.xxxxx.com
hillbun commented 2 years ago

My setting is

            - name: QUARKUS_AUTOMATIKO_SERVICE_URL
              value: http://automatiko-approval-task.default/

This is just for k8s internal service only, and email link is http://localhost:8080/ but not http://automatiko-approval-task.default/

I think we should add another env

- name: QUARKUS_AUTOMATIKO_SERVICE_URL
  value: http://automatiko-approval.xxxxx.com

for email link point to ingress domain name.

hillbun commented 2 years ago

write mistake


        - name: QUARKUS_AUTOMATIKO_APPROVAL_URL
          value: http://automatiko-approval.xxxxx.com/
mswiderski commented 2 years ago

QUARKUS_AUTOMATIKO_SERVICE_URL is to point to the ingress domain name as it is then allowing to access service from outside y users.

I just double checked and it is properly set, I use this setup https://github.com/automatiko-io/automatiko-approval-task/blob/main/k8s/kubernetes-basic.yml#L183 as I am running through port forward and I see in the mail link like this:

<a href="http://localhost:9000/management/tasks/link/c2luZ2xlfGQ

so there must be some kind of type or so that does not get properly resolved.

hillbun commented 2 years ago

do u mean QUARKUS_AUTOMATIKO_SERVICE_URL is just used for outside visit only?

and not for any inside calls?

If I set QUARKUS_AUTOMATIKO_SERVICE_URL to http://automatiko-approval.xxxxx.com/ , the link in email will be http://automatiko-approval.xxxxx.com/ and not http://localhost:8080/ ?

I will trt it now

mswiderski commented 2 years ago

exactly that

hillbun commented 2 years ago

I set QUARKUS_AUTOMATIKO_SERVICE_URL: http://automatiko-approval.xxxx.com/

but link in email is still http://localhost:8080/

please advise

mswiderski commented 2 years ago

where do you set it? In the pipeline or in the deployment? Can you paste the deployment yaml here?

hillbun commented 2 years ago
    spec:
      containers:
      - env:
        - name: KUBERNETES_NAMESPACE
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
        - name: QUARKUS_OPERATOR_SDK_NAMESPACES
          value: default
        - name: QUARKUS_AUTOMATIKO_SERVICE_URL
          value: http://automatiko-approval.xxxx.com/
...
        image: mswiderski/automatiko-approval-task:0.4.0
mswiderski commented 2 years ago

this looks valid, could you try to underplay and deploy it again? so it goes from a clean state... wild guess but it should work.

BTW: you can now move to the official automatiko/automatiko-approval-task:0.4.0 image as it was already released.

hillbun commented 2 years ago

I move to automatiko/automatiko-approval-task:0.4.0 but link in email is still still http://localhost:8080/

mswiderski commented 2 years ago

this is really weird... can you log into container and see if that environment variable is set?

mswiderski commented 2 years ago

last resort option will be to do the replacement in the template, so you could add to your custom template following

{link.replace("http://localhost:8080", "http://automatiko-approval.xxxx.com")}

and that should generate valid link for your use case.

hillbun commented 2 years ago

in POD of approval

env is :

QUARKUS_AUTOMATIKO_SERVICE_URL=http://automatiko-approval.xxxx.com/

is it a bug or feature not finished?

do you plan to fix it in next release?

mswiderski commented 2 years ago

the thing is that I cannot reproduce it. it works as expected on few environments I tried it. Without reproducing it's difficult to fix it.

hillbun commented 2 years ago

make a debug image for logs let me trace it please.

mswiderski commented 2 years ago

give it a try with this one mswiderski/automatiko-approval-task:0.4.1

hillbun commented 2 years ago

I update image to mswiderski/automatiko-approval-task:0.4.1

when pod of approval start, I get errors:

2022-08-26 07:18:04,157 ERROR [io.aut.eng.wor.pro.ins.imp.WorkflowProcessInstanceImpl] (EventHandler-approvals) Unexpected error (id 12737309-0819-4d05-ba18-cbdb1d8c92ea) while executing node initialize task information in process instance c87bdb36-1d2b-319d-8966-5e05f8891270: io.automatiko.engine.workflow.base.instance.impl.workitem.WorkItemHandlerNotFoundException: Could not find work item handler for io.automatiko.tekton.task.approval.internal.ApprovalTaskResourceOperations_initializeApprovalTask_approvals_13_Handler
        at io.automatiko.engine.workflow.base.instance.LightWorkItemManager.internalAbortWorkItem(LightWorkItemManager.java:99)
        at io.automatiko.engine.workflow.process.instance.node.WorkItemNodeInstance.cancel(WorkItemNodeInstance.java:480)
        at io.automatiko.engine.workflow.process.instance.impl.WorkflowProcessInstanceImpl.setState(WorkflowProcessInstanceImpl.java:420)
        at io.automatiko.engine.workflow.process.instance.impl.WorkflowProcessInstanceImpl.setState(WorkflowProcessInstanceImpl.java:455)
        at io.automatiko.engine.workflow.process.instance.node.WorkItemNodeInstance.internalTrigger(WorkItemNodeInstance.java:188)
        at io.automatiko.engine.workflow.process.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:291)
        at io.automatiko.engine.workflow.process.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:514)
        at io.automatiko.engine.workflow.process.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:495)
        at io.automatiko.engine.workflow.process.instance.impl.NodeInstanceImpl.continueToNextNode(NodeInstanceImpl.java:459)
        at io.automatiko.engine.workflow.process.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:363)
        at io.automatiko.engine.workflow.process.instance.node.StartNodeInstance.triggerCompleted(StartNodeInstance.java:186)
        at io.automatiko.engine.workflow.process.instance.node.StartNodeInstance.signalEvent(StartNodeInstance.java:172)
        at io.automatiko.engine.workflow.process.executable.instance.ExecutableProcessInstance.internalStart(ExecutableProcessInstance.java:24)
        at io.automatiko.engine.workflow.base.instance.impl.ProcessInstanceImpl.start(ProcessInstanceImpl.java:215)
        at io.automatiko.engine.workflow.process.instance.impl.WorkflowProcessInstanceImpl.start(WorkflowProcessInstanceImpl.java:523)
        at io.automatiko.engine.workflow.base.instance.LightProcessRuntime.startProcessInstance(LightProcessRuntime.java:133)
        at io.automatiko.engine.workflow.AbstractProcessInstance.start(AbstractProcessInstance.java:324)
        at io.automatiko.tekton.tasks.approval.ApprovalsMessageConsumer1.lambda$reconcile$2(ApprovalsMessageConsumer1.java:113)
        at io.automatiko.engine.services.uow.UnitOfWorkExecutor.executeInUnitOfWork(UnitOfWorkExecutor.java:27)
        at io.automatiko.tekton.tasks.approval.ApprovalsMessageConsumer1.reconcile(ApprovalsMessageConsumer1.java:91)
        at io.automatiko.tekton.tasks.approval.ApprovalsMessageConsumer1.reconcile(ApprovalsMessageConsumer1.java:28)
        at io.automatiko.tekton.tasks.approval.ApprovalsMessageConsumer1_ClientProxy.reconcile(Unknown Source)
        at io.javaoperatorsdk.operator.processing.Controller$2.execute(Controller.java:101)
        at io.javaoperatorsdk.operator.processing.Controller$2.execute(Controller.java:76)
        at io.micrometer.core.instrument.composite.CompositeTimer.record(CompositeTimer.java:65)
        at io.javaoperatorsdk.operator.monitoring.micrometer.MicrometerMetrics.timeControllerExecution(MicrometerMetrics.java:36)
        at io.javaoperatorsdk.operator.processing.Controller.reconcile(Controller.java:75)
        at io.javaoperatorsdk.operator.processing.event.ReconciliationDispatcher.reconcileExecution(ReconciliationDispatcher.java:143)
        at io.javaoperatorsdk.operator.processing.event.ReconciliationDispatcher.handleReconcile(ReconciliationDispatcher.java:109)
        at io.javaoperatorsdk.operator.processing.event.ReconciliationDispatcher.handleDispatch(ReconciliationDispatcher.java:74)
        at io.javaoperatorsdk.operator.processing.event.ReconciliationDispatcher.handleExecution(ReconciliationDispatcher.java:50)
        at io.javaoperatorsdk.operator.processing.event.EventProcessor$ControllerExecution.run(EventProcessor.java:349)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
        at java.lang.Thread.run(Thread.java:833)
        at com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:704)
        at com.oracle.svm.core.posix.thread.PosixPlatformThreads.pthreadStartRoutine(PosixPlatformThreads.java:202)

2022-08-26 07:18:04,166 ERROR [io.aut.eng.wor.pro.ins.imp.WorkflowProcessInstanceImpl] (EventHandler-runs) Unexpected error (id 78ad6637-7888-46f2-be09-ec06d6bda532) while executing node Create Approval Task CR in process instance c87bdb36-1d2b-319d-8966-5e05f8891270: io.automatiko.engine.workflow.base.instance.impl.workitem.WorkItemHandlerNotFoundException: Could not find work item handler for io.automatiko.tekton.task.approval.internal.ApprovalTaskResourceOperations_createApprovalTask_runs_3_Handler
        at io.automatiko.engine.workflow.base.instance.LightWorkItemManager.internalAbortWorkItem(LightWorkItemManager.java:99)
        at io.automatiko.engine.workflow.process.instance.node.WorkItemNodeInstance.cancel(WorkItemNodeInstance.java:480)
        at io.automatiko.engine.workflow.process.instance.impl.WorkflowProcessInstanceImpl.setState(WorkflowProcessInstanceImpl.java:420)
        at io.automatiko.engine.workflow.process.instance.impl.WorkflowProcessInstanceImpl.setState(WorkflowProcessInstanceImpl.java:455)
        at io.automatiko.engine.workflow.process.instance.node.WorkItemNodeInstance.internalTrigger(WorkItemNodeInstance.java:188)
        at io.automatiko.engine.workflow.process.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:291)
        at io.automatiko.engine.workflow.process.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:514)
        at io.automatiko.engine.workflow.process.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:495)
        at io.automatiko.engine.workflow.process.instance.impl.NodeInstanceImpl.continueToNextNode(NodeInstanceImpl.java:459)
        at io.automatiko.engine.workflow.process.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:363)
        at io.automatiko.engine.workflow.process.instance.node.StartNodeInstance.triggerCompleted(StartNodeInstance.java:186)
        at io.automatiko.engine.workflow.process.instance.node.StartNodeInstance.signalEvent(StartNodeInstance.java:172)
        at io.automatiko.engine.workflow.process.executable.instance.ExecutableProcessInstance.internalStart(ExecutableProcessInstance.java:24)
        at io.automatiko.engine.workflow.base.instance.impl.ProcessInstanceImpl.start(ProcessInstanceImpl.java:215)
        at io.automatiko.engine.workflow.process.instance.impl.WorkflowProcessInstanceImpl.start(WorkflowProcessInstanceImpl.java:523)
        at io.automatiko.engine.workflow.base.instance.LightProcessRuntime.startProcessInstance(LightProcessRuntime.java:133)
        at io.automatiko.engine.workflow.AbstractProcessInstance.start(AbstractProcessInstance.java:324)
        at io.automatiko.tekton.task.run.RunsMessageConsumer1.lambda$reconcile$2(RunsMessageConsumer1.java:113)
        at io.automatiko.engine.services.uow.UnitOfWorkExecutor.executeInUnitOfWork(UnitOfWorkExecutor.java:27)
        at io.automatiko.tekton.task.run.RunsMessageConsumer1.reconcile(RunsMessageConsumer1.java:91)
        at io.automatiko.tekton.task.run.RunsMessageConsumer1.reconcile(RunsMessageConsumer1.java:28)
        at io.automatiko.tekton.task.run.RunsMessageConsumer1_ClientProxy.reconcile(Unknown Source)
        at io.javaoperatorsdk.operator.processing.Controller$2.execute(Controller.java:101)
        at io.javaoperatorsdk.operator.processing.Controller$2.execute(Controller.java:76)
        at io.micrometer.core.instrument.composite.CompositeTimer.record(CompositeTimer.java:65)
        at io.javaoperatorsdk.operator.monitoring.micrometer.MicrometerMetrics.timeControllerExecution(MicrometerMetrics.java:36)
        at io.javaoperatorsdk.operator.processing.Controller.reconcile(Controller.java:75)
        at io.javaoperatorsdk.operator.processing.event.ReconciliationDispatcher.reconcileExecution(ReconciliationDispatcher.java:143)
        at io.javaoperatorsdk.operator.processing.event.ReconciliationDispatcher.handleReconcile(ReconciliationDispatcher.java:109)
        at io.javaoperatorsdk.operator.processing.event.ReconciliationDispatcher.handleDispatch(ReconciliationDispatcher.java:74)
        at io.javaoperatorsdk.operator.processing.event.ReconciliationDispatcher.handleExecution(ReconciliationDispatcher.java:50)
        at io.javaoperatorsdk.operator.processing.event.EventProcessor$ControllerExecution.run(EventProcessor.java:349)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
        at java.lang.Thread.run(Thread.java:833)
        at com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:704)
        at com.oracle.svm.core.posix.thread.PosixPlatformThreads.pthreadStartRoutine(PosixPlatformThreads.java:202)

2022-08-26 07:18:04,169 INFO  [io.qua.ope.run.AppEventListener] (main) Quarkus Java Operator SDK extension 3.0.8 (commit: ef221b3 on branch: ef221b39cd8eb90fdc88fe85d742d669195727c0) built on Wed Jun 08 13:55:41 GMT 2022
2022-08-26 07:18:04,192 ERROR [MessageConsumer] (EventHandler-approvals) Encountered problems while creating/updating instance: io.automatiko.engine.api.workflow.ProcessInstanceDuplicatedException: Process instance with id 'gitlab-pipelinerun-4kmbr-deploy-dev-approval-task' already exists, usually this means business key has been already used
        at io.automatiko.engine.workflow.AbstractProcessInstance.<init>(AbstractProcessInstance.java:137)
        at io.automatiko.tekton.tasks.approval.ApprovalsProcessInstance.<init>(ApprovalsProcessInstance.java:10)
        at io.automatiko.tekton.tasks.approval.ApprovalsProcess.createInstance(ApprovalsProcess.java:77)
        at io.automatiko.tekton.tasks.approval.ApprovalsProcess.createInstance(ApprovalsProcess.java:16)
        at io.automatiko.tekton.tasks.approval.ApprovalsProcess_ClientProxy.createInstance(Unknown Source)
        at io.automatiko.tekton.tasks.approval.ApprovalsMessageConsumer1.lambda$reconcile$2(ApprovalsMessageConsumer1.java:112)
        at io.automatiko.engine.services.uow.UnitOfWorkExecutor.executeInUnitOfWork(UnitOfWorkExecutor.java:27)
        at io.automatiko.tekton.tasks.approval.ApprovalsMessageConsumer1.reconcile(ApprovalsMessageConsumer1.java:91)
        at io.automatiko.tekton.tasks.approval.ApprovalsMessageConsumer1.reconcile(ApprovalsMessageConsumer1.java:28)
        at io.automatiko.tekton.tasks.approval.ApprovalsMessageConsumer1_ClientProxy.reconcile(Unknown Source)
        at io.javaoperatorsdk.operator.processing.Controller$2.execute(Controller.java:101)
        at io.javaoperatorsdk.operator.processing.Controller$2.execute(Controller.java:76)
        at io.micrometer.core.instrument.composite.CompositeTimer.record(CompositeTimer.java:65)
        at io.javaoperatorsdk.operator.monitoring.micrometer.MicrometerMetrics.timeControllerExecution(MicrometerMetrics.java:36)
        at io.javaoperatorsdk.operator.processing.Controller.reconcile(Controller.java:75)
        at io.javaoperatorsdk.operator.processing.event.ReconciliationDispatcher.reconcileExecution(ReconciliationDispatcher.java:143)
        at io.javaoperatorsdk.operator.processing.event.ReconciliationDispatcher.handleReconcile(ReconciliationDispatcher.java:109)
        at io.javaoperatorsdk.operator.processing.event.ReconciliationDispatcher.handleDispatch(ReconciliationDispatcher.java:74)
        at io.javaoperatorsdk.operator.processing.event.ReconciliationDispatcher.handleExecution(ReconciliationDispatcher.java:50)
        at io.javaoperatorsdk.operator.processing.event.EventProcessor$ControllerExecution.run(EventProcessor.java:349)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
        at java.lang.Thread.run(Thread.java:833)
        at com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:704)
        at com.oracle.svm.core.posix.thread.PosixPlatformThreads.pthreadStartRoutine(PosixPlatformThreads.java:202)

2022-08-26 07:18:04,226 ERROR [MessageConsumer] (EventHandler-runs) Encountered problems while creating/updating instance: io.automatiko.engine.api.workflow.ProcessInstanceDuplicatedException: Process instance with id 'gitlab-pipelinerun-4kmbr-deploy-dev-approval-task' already exists, usually this means business key has been already used
        at io.automatiko.engine.workflow.AbstractProcessInstance.<init>(AbstractProcessInstance.java:137)
        at io.automatiko.tekton.task.run.RunsProcessInstance.<init>(RunsProcessInstance.java:10)
        at io.automatiko.tekton.task.run.RunsProcess.createInstance(RunsProcess.java:41)
        at io.automatiko.tekton.task.run.RunsProcess.createInstance(RunsProcess.java:12)
        at io.automatiko.tekton.task.run.RunsProcess_ClientProxy.createInstance(Unknown Source)
        at io.automatiko.tekton.task.run.RunsMessageConsumer1.lambda$reconcile$2(RunsMessageConsumer1.java:112)
        at io.automatiko.engine.services.uow.UnitOfWorkExecutor.executeInUnitOfWork(UnitOfWorkExecutor.java:27)
        at io.automatiko.tekton.task.run.RunsMessageConsumer1.reconcile(RunsMessageConsumer1.java:91)
        at io.automatiko.tekton.task.run.RunsMessageConsumer1.reconcile(RunsMessageConsumer1.java:28)
        at io.automatiko.tekton.task.run.RunsMessageConsumer1_ClientProxy.reconcile(Unknown Source)
        at io.javaoperatorsdk.operator.processing.Controller$2.execute(Controller.java:101)
        at io.javaoperatorsdk.operator.processing.Controller$2.execute(Controller.java:76)
        at io.micrometer.core.instrument.composite.CompositeTimer.record(CompositeTimer.java:65)
        at io.javaoperatorsdk.operator.monitoring.micrometer.MicrometerMetrics.timeControllerExecution(MicrometerMetrics.java:36)
        at io.javaoperatorsdk.operator.processing.Controller.reconcile(Controller.java:75)
        at io.javaoperatorsdk.operator.processing.event.ReconciliationDispatcher.reconcileExecution(ReconciliationDispatcher.java:143)
        at io.javaoperatorsdk.operator.processing.event.ReconciliationDispatcher.handleReconcile(ReconciliationDispatcher.java:109)
        at io.javaoperatorsdk.operator.processing.event.ReconciliationDispatcher.handleDispatch(ReconciliationDispatcher.java:74)
        at io.javaoperatorsdk.operator.processing.event.ReconciliationDispatcher.handleExecution(ReconciliationDispatcher.java:50)
        at io.javaoperatorsdk.operator.processing.event.EventProcessor$ControllerExecution.run(EventProcessor.java:349)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
        at java.lang.Thread.run(Thread.java:833)
        at com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:704)
        at com.oracle.svm.core.posix.thread.PosixPlatformThreads.pthreadStartRoutine(PosixPlatformThreads.java:202)
mswiderski commented 2 years ago

aren't there any other errors/logs at the very beginning of the pod logs?

hillbun commented 2 years ago

this is full logs from pod start to email sent

kubectl logs automatiko-approval-task-5c4fc9d5f-2vc84 
 ______     __  __     ______   ______     __    __     ______     ______   __     __  __     ______    
/\  __ \   /\ \/\ \   /\__  _\ /\  __ \   /\ "-./  \   /\  __ \   /\__  _\ /\ \   /\ \/ /    /\  __ \   
\ \  __ \  \ \ \_\ \  \/_/\ \/ \ \ \/\ \  \ \ \-./\ \  \ \  __ \  \/_/\ \/ \ \ \  \ \  _"-.  \ \ \/\ \  
 \ \_\ \_\  \ \_____\    \ \_\  \ \_____\  \ \_\ \ \_\  \ \_\ \_\    \ \_\  \ \_\  \ \_\ \_\  \ \_____\ 
  \/_/\/_/   \/_____/     \/_/   \/_____/   \/_/  \/_/   \/_/\/_/     \/_/   \/_/   \/_/\/_/   \/_____/ 
                                                                         Powered by Quarkus 2.11.1.Final
2022-08-26 07:18:04,066 INFO  [io.qua.sma.ope.run.OpenApiRecorder] (main) Default CORS properties will be used, please use 'quarkus.http.cors' properties instead
2022-08-26 07:18:04,081 INFO  [io.aut.eng.add.use.man.tem.FileSystemTemplateLoader] (main) Added template 'approval-email' from external path /templates/approval-email.html
2022-08-26 07:18:04,105 WARN  [io.fab.kub.cli.int.VersionUsageUtils] (ForkJoinPool.commonPool-worker-1) The client is using resource type 'runs' with unstable version 'v1alpha1'
2022-08-26 07:18:04,106 WARN  [io.fab.kub.cli.int.VersionUsageUtils] (main) The client is using resource type 'approvaltasks' with unstable version 'v1alpha1'
2022-08-26 07:18:04,157 ERROR [io.aut.eng.wor.pro.ins.imp.WorkflowProcessInstanceImpl] (EventHandler-approvals) Unexpected error (id 12737309-0819-4d05-ba18-cbdb1d8c92ea) while executing node initialize task information in process instance c87bdb36-1d2b-319d-8966-5e05f8891270: io.automatiko.engine.workflow.base.instance.impl.workitem.WorkItemHandlerNotFoundException: Could not find work item handler for io.automatiko.tekton.task.approval.internal.ApprovalTaskResourceOperations_initializeApprovalTask_approvals_13_Handler
        at io.automatiko.engine.workflow.base.instance.LightWorkItemManager.internalAbortWorkItem(LightWorkItemManager.java:99)
        at io.automatiko.engine.workflow.process.instance.node.WorkItemNodeInstance.cancel(WorkItemNodeInstance.java:480)
        at io.automatiko.engine.workflow.process.instance.impl.WorkflowProcessInstanceImpl.setState(WorkflowProcessInstanceImpl.java:420)
        at io.automatiko.engine.workflow.process.instance.impl.WorkflowProcessInstanceImpl.setState(WorkflowProcessInstanceImpl.java:455)
        at io.automatiko.engine.workflow.process.instance.node.WorkItemNodeInstance.internalTrigger(WorkItemNodeInstance.java:188)
        at io.automatiko.engine.workflow.process.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:291)
        at io.automatiko.engine.workflow.process.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:514)
        at io.automatiko.engine.workflow.process.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:495)
        at io.automatiko.engine.workflow.process.instance.impl.NodeInstanceImpl.continueToNextNode(NodeInstanceImpl.java:459)
        at io.automatiko.engine.workflow.process.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:363)
        at io.automatiko.engine.workflow.process.instance.node.StartNodeInstance.triggerCompleted(StartNodeInstance.java:186)
        at io.automatiko.engine.workflow.process.instance.node.StartNodeInstance.signalEvent(StartNodeInstance.java:172)
        at io.automatiko.engine.workflow.process.executable.instance.ExecutableProcessInstance.internalStart(ExecutableProcessInstance.java:24)
        at io.automatiko.engine.workflow.base.instance.impl.ProcessInstanceImpl.start(ProcessInstanceImpl.java:215)
        at io.automatiko.engine.workflow.process.instance.impl.WorkflowProcessInstanceImpl.start(WorkflowProcessInstanceImpl.java:523)
        at io.automatiko.engine.workflow.base.instance.LightProcessRuntime.startProcessInstance(LightProcessRuntime.java:133)
        at io.automatiko.engine.workflow.AbstractProcessInstance.start(AbstractProcessInstance.java:324)
        at io.automatiko.tekton.tasks.approval.ApprovalsMessageConsumer1.lambda$reconcile$2(ApprovalsMessageConsumer1.java:113)
        at io.automatiko.engine.services.uow.UnitOfWorkExecutor.executeInUnitOfWork(UnitOfWorkExecutor.java:27)
        at io.automatiko.tekton.tasks.approval.ApprovalsMessageConsumer1.reconcile(ApprovalsMessageConsumer1.java:91)
        at io.automatiko.tekton.tasks.approval.ApprovalsMessageConsumer1.reconcile(ApprovalsMessageConsumer1.java:28)
        at io.automatiko.tekton.tasks.approval.ApprovalsMessageConsumer1_ClientProxy.reconcile(Unknown Source)
        at io.javaoperatorsdk.operator.processing.Controller$2.execute(Controller.java:101)
        at io.javaoperatorsdk.operator.processing.Controller$2.execute(Controller.java:76)
        at io.micrometer.core.instrument.composite.CompositeTimer.record(CompositeTimer.java:65)
        at io.javaoperatorsdk.operator.monitoring.micrometer.MicrometerMetrics.timeControllerExecution(MicrometerMetrics.java:36)
        at io.javaoperatorsdk.operator.processing.Controller.reconcile(Controller.java:75)
        at io.javaoperatorsdk.operator.processing.event.ReconciliationDispatcher.reconcileExecution(ReconciliationDispatcher.java:143)
        at io.javaoperatorsdk.operator.processing.event.ReconciliationDispatcher.handleReconcile(ReconciliationDispatcher.java:109)
        at io.javaoperatorsdk.operator.processing.event.ReconciliationDispatcher.handleDispatch(ReconciliationDispatcher.java:74)
        at io.javaoperatorsdk.operator.processing.event.ReconciliationDispatcher.handleExecution(ReconciliationDispatcher.java:50)
        at io.javaoperatorsdk.operator.processing.event.EventProcessor$ControllerExecution.run(EventProcessor.java:349)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
        at java.lang.Thread.run(Thread.java:833)
        at com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:704)
        at com.oracle.svm.core.posix.thread.PosixPlatformThreads.pthreadStartRoutine(PosixPlatformThreads.java:202)

2022-08-26 07:18:04,166 ERROR [io.aut.eng.wor.pro.ins.imp.WorkflowProcessInstanceImpl] (EventHandler-runs) Unexpected error (id 78ad6637-7888-46f2-be09-ec06d6bda532) while executing node Create Approval Task CR in process instance c87bdb36-1d2b-319d-8966-5e05f8891270: io.automatiko.engine.workflow.base.instance.impl.workitem.WorkItemHandlerNotFoundException: Could not find work item handler for io.automatiko.tekton.task.approval.internal.ApprovalTaskResourceOperations_createApprovalTask_runs_3_Handler
        at io.automatiko.engine.workflow.base.instance.LightWorkItemManager.internalAbortWorkItem(LightWorkItemManager.java:99)
        at io.automatiko.engine.workflow.process.instance.node.WorkItemNodeInstance.cancel(WorkItemNodeInstance.java:480)
        at io.automatiko.engine.workflow.process.instance.impl.WorkflowProcessInstanceImpl.setState(WorkflowProcessInstanceImpl.java:420)
        at io.automatiko.engine.workflow.process.instance.impl.WorkflowProcessInstanceImpl.setState(WorkflowProcessInstanceImpl.java:455)
        at io.automatiko.engine.workflow.process.instance.node.WorkItemNodeInstance.internalTrigger(WorkItemNodeInstance.java:188)
        at io.automatiko.engine.workflow.process.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:291)
        at io.automatiko.engine.workflow.process.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:514)
        at io.automatiko.engine.workflow.process.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:495)
        at io.automatiko.engine.workflow.process.instance.impl.NodeInstanceImpl.continueToNextNode(NodeInstanceImpl.java:459)
        at io.automatiko.engine.workflow.process.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:363)
        at io.automatiko.engine.workflow.process.instance.node.StartNodeInstance.triggerCompleted(StartNodeInstance.java:186)
        at io.automatiko.engine.workflow.process.instance.node.StartNodeInstance.signalEvent(StartNodeInstance.java:172)
        at io.automatiko.engine.workflow.process.executable.instance.ExecutableProcessInstance.internalStart(ExecutableProcessInstance.java:24)
        at io.automatiko.engine.workflow.base.instance.impl.ProcessInstanceImpl.start(ProcessInstanceImpl.java:215)
        at io.automatiko.engine.workflow.process.instance.impl.WorkflowProcessInstanceImpl.start(WorkflowProcessInstanceImpl.java:523)
        at io.automatiko.engine.workflow.base.instance.LightProcessRuntime.startProcessInstance(LightProcessRuntime.java:133)
        at io.automatiko.engine.workflow.AbstractProcessInstance.start(AbstractProcessInstance.java:324)
        at io.automatiko.tekton.task.run.RunsMessageConsumer1.lambda$reconcile$2(RunsMessageConsumer1.java:113)
        at io.automatiko.engine.services.uow.UnitOfWorkExecutor.executeInUnitOfWork(UnitOfWorkExecutor.java:27)
        at io.automatiko.tekton.task.run.RunsMessageConsumer1.reconcile(RunsMessageConsumer1.java:91)
        at io.automatiko.tekton.task.run.RunsMessageConsumer1.reconcile(RunsMessageConsumer1.java:28)
        at io.automatiko.tekton.task.run.RunsMessageConsumer1_ClientProxy.reconcile(Unknown Source)
        at io.javaoperatorsdk.operator.processing.Controller$2.execute(Controller.java:101)
        at io.javaoperatorsdk.operator.processing.Controller$2.execute(Controller.java:76)
        at io.micrometer.core.instrument.composite.CompositeTimer.record(CompositeTimer.java:65)
        at io.javaoperatorsdk.operator.monitoring.micrometer.MicrometerMetrics.timeControllerExecution(MicrometerMetrics.java:36)
        at io.javaoperatorsdk.operator.processing.Controller.reconcile(Controller.java:75)
        at io.javaoperatorsdk.operator.processing.event.ReconciliationDispatcher.reconcileExecution(ReconciliationDispatcher.java:143)
        at io.javaoperatorsdk.operator.processing.event.ReconciliationDispatcher.handleReconcile(ReconciliationDispatcher.java:109)
        at io.javaoperatorsdk.operator.processing.event.ReconciliationDispatcher.handleDispatch(ReconciliationDispatcher.java:74)
        at io.javaoperatorsdk.operator.processing.event.ReconciliationDispatcher.handleExecution(ReconciliationDispatcher.java:50)
        at io.javaoperatorsdk.operator.processing.event.EventProcessor$ControllerExecution.run(EventProcessor.java:349)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
        at java.lang.Thread.run(Thread.java:833)
        at com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:704)
        at com.oracle.svm.core.posix.thread.PosixPlatformThreads.pthreadStartRoutine(PosixPlatformThreads.java:202)

2022-08-26 07:18:04,169 INFO  [io.qua.ope.run.AppEventListener] (main) Quarkus Java Operator SDK extension 3.0.8 (commit: ef221b3 on branch: ef221b39cd8eb90fdc88fe85d742d669195727c0) built on Wed Jun 08 13:55:41 GMT 2022
2022-08-26 07:18:04,192 ERROR [MessageConsumer] (EventHandler-approvals) Encountered problems while creating/updating instance: io.automatiko.engine.api.workflow.ProcessInstanceDuplicatedException: Process instance with id 'gitlab-pipelinerun-4kmbr-deploy-dev-approval-task' already exists, usually this means business key has been already used
        at io.automatiko.engine.workflow.AbstractProcessInstance.<init>(AbstractProcessInstance.java:137)
        at io.automatiko.tekton.tasks.approval.ApprovalsProcessInstance.<init>(ApprovalsProcessInstance.java:10)
        at io.automatiko.tekton.tasks.approval.ApprovalsProcess.createInstance(ApprovalsProcess.java:77)
        at io.automatiko.tekton.tasks.approval.ApprovalsProcess.createInstance(ApprovalsProcess.java:16)
        at io.automatiko.tekton.tasks.approval.ApprovalsProcess_ClientProxy.createInstance(Unknown Source)
        at io.automatiko.tekton.tasks.approval.ApprovalsMessageConsumer1.lambda$reconcile$2(ApprovalsMessageConsumer1.java:112)
        at io.automatiko.engine.services.uow.UnitOfWorkExecutor.executeInUnitOfWork(UnitOfWorkExecutor.java:27)
        at io.automatiko.tekton.tasks.approval.ApprovalsMessageConsumer1.reconcile(ApprovalsMessageConsumer1.java:91)
        at io.automatiko.tekton.tasks.approval.ApprovalsMessageConsumer1.reconcile(ApprovalsMessageConsumer1.java:28)
        at io.automatiko.tekton.tasks.approval.ApprovalsMessageConsumer1_ClientProxy.reconcile(Unknown Source)
        at io.javaoperatorsdk.operator.processing.Controller$2.execute(Controller.java:101)
        at io.javaoperatorsdk.operator.processing.Controller$2.execute(Controller.java:76)
        at io.micrometer.core.instrument.composite.CompositeTimer.record(CompositeTimer.java:65)
        at io.javaoperatorsdk.operator.monitoring.micrometer.MicrometerMetrics.timeControllerExecution(MicrometerMetrics.java:36)
        at io.javaoperatorsdk.operator.processing.Controller.reconcile(Controller.java:75)
        at io.javaoperatorsdk.operator.processing.event.ReconciliationDispatcher.reconcileExecution(ReconciliationDispatcher.java:143)
        at io.javaoperatorsdk.operator.processing.event.ReconciliationDispatcher.handleReconcile(ReconciliationDispatcher.java:109)
        at io.javaoperatorsdk.operator.processing.event.ReconciliationDispatcher.handleDispatch(ReconciliationDispatcher.java:74)
        at io.javaoperatorsdk.operator.processing.event.ReconciliationDispatcher.handleExecution(ReconciliationDispatcher.java:50)
        at io.javaoperatorsdk.operator.processing.event.EventProcessor$ControllerExecution.run(EventProcessor.java:349)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
        at java.lang.Thread.run(Thread.java:833)
        at com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:704)
        at com.oracle.svm.core.posix.thread.PosixPlatformThreads.pthreadStartRoutine(PosixPlatformThreads.java:202)

2022-08-26 07:18:04,226 ERROR [MessageConsumer] (EventHandler-runs) Encountered problems while creating/updating instance: io.automatiko.engine.api.workflow.ProcessInstanceDuplicatedException: Process instance with id 'gitlab-pipelinerun-4kmbr-deploy-dev-approval-task' already exists, usually this means business key has been already used
        at io.automatiko.engine.workflow.AbstractProcessInstance.<init>(AbstractProcessInstance.java:137)
        at io.automatiko.tekton.task.run.RunsProcessInstance.<init>(RunsProcessInstance.java:10)
        at io.automatiko.tekton.task.run.RunsProcess.createInstance(RunsProcess.java:41)
        at io.automatiko.tekton.task.run.RunsProcess.createInstance(RunsProcess.java:12)
        at io.automatiko.tekton.task.run.RunsProcess_ClientProxy.createInstance(Unknown Source)
        at io.automatiko.tekton.task.run.RunsMessageConsumer1.lambda$reconcile$2(RunsMessageConsumer1.java:112)
        at io.automatiko.engine.services.uow.UnitOfWorkExecutor.executeInUnitOfWork(UnitOfWorkExecutor.java:27)
        at io.automatiko.tekton.task.run.RunsMessageConsumer1.reconcile(RunsMessageConsumer1.java:91)
        at io.automatiko.tekton.task.run.RunsMessageConsumer1.reconcile(RunsMessageConsumer1.java:28)
        at io.automatiko.tekton.task.run.RunsMessageConsumer1_ClientProxy.reconcile(Unknown Source)
        at io.javaoperatorsdk.operator.processing.Controller$2.execute(Controller.java:101)
        at io.javaoperatorsdk.operator.processing.Controller$2.execute(Controller.java:76)
        at io.micrometer.core.instrument.composite.CompositeTimer.record(CompositeTimer.java:65)
        at io.javaoperatorsdk.operator.monitoring.micrometer.MicrometerMetrics.timeControllerExecution(MicrometerMetrics.java:36)
        at io.javaoperatorsdk.operator.processing.Controller.reconcile(Controller.java:75)
        at io.javaoperatorsdk.operator.processing.event.ReconciliationDispatcher.reconcileExecution(ReconciliationDispatcher.java:143)
        at io.javaoperatorsdk.operator.processing.event.ReconciliationDispatcher.handleReconcile(ReconciliationDispatcher.java:109)
        at io.javaoperatorsdk.operator.processing.event.ReconciliationDispatcher.handleDispatch(ReconciliationDispatcher.java:74)
        at io.javaoperatorsdk.operator.processing.event.ReconciliationDispatcher.handleExecution(ReconciliationDispatcher.java:50)
        at io.javaoperatorsdk.operator.processing.event.EventProcessor$ControllerExecution.run(EventProcessor.java:349)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
        at java.lang.Thread.run(Thread.java:833)
        at com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:704)
        at com.oracle.svm.core.posix.thread.PosixPlatformThreads.pthreadStartRoutine(PosixPlatformThreads.java:202)

2022-08-26 07:18:04,229 INFO  [io.quarkus] (main) automatiko-approval-task 0.4.1 native (powered by Quarkus 2.11.1.Final) started in 0.213s. Listening on: http://0.0.0.0:8080
2022-08-26 07:18:04,230 INFO  [io.quarkus] (main) Profile withemail activated. 
2022-08-26 07:18:04,230 INFO  [io.quarkus] (main) Installed features: [automatiko, automatiko-operator, cdi, kubernetes, kubernetes-client, mailer, micrometer, openshift-client, operator-sdk, qute, resteasy-reactive, resteasy-reactive-jackson, resteasy-reactive-qute, security, smallrye-context-propagation, smallrye-health, smallrye-openapi, swagger-ui, vertx, websockets, websockets-client]
2022-08-26 07:26:11,045 INFO  [io.aut.tek.tas.app.int.ApprovalTaskResourceOperations] (EventHandler-runs) Service Url given via configuration is http://automatiko-approval.xxxxx.com/
2022-08-26 07:26:11,046 INFO  [io.aut.tek.tas.app.int.ApprovalTaskResourceOperations] (EventHandler-runs) Service Url taken directly from environment http://automatiko-approval.xxxxx.com/
2022-08-26 07:26:11,059 INFO  [io.aut.tek.tas.app.int.ApprovalTaskResourceOperations] (EventHandler-runs) New approval task has been created RunStatus [startTime=2022-08-26T07:26:11Z, results=null, conditions=[{reason=Succeeded, message=Approval Task has been created, status=Unknown}]]
2022-08-26 07:26:11,060 INFO  [io.aut.eng.add.per.fil.job.FileSystemBasedJobService] (EventHandler-runs) Timer scheduled for date 2022-08-26T12:26:11.060254Z[GMT] will expire in 17999999