Hello,
not at all, I think it's a very interesting question. So, you're right, the
operator is running multiple threads, one per controller. However, the
level of concurrency is not directly defined by Camel K or Golang, but, by
the framework we use, which is the Operator Framework. There is the
possibility to change the level of concurrency [1], but I don't think it's
wise because it introduces the need to synchronize the resource that your
operator is watching. Let's imagine you have 2 reconcile threads willing to
reconcile the same Integration. You may have a race condition there. In
fact, in the provided documentation you can see that there is the usage of
a MemCache, which I guess it's used to synchronize access to the CRs.

In Camel K we're working on a different kind of tenancy model which may be
also used to increase the level of concurrency [2]. With this, you can run
more than one operator and specify which resources to watch. It's not the
low level of concurrency you're asking for, but I think it's the best way
to achieve that ATM.

Regards,
Pasquale.

[1]
https://docs.openshift.com/container-platform/4.13/operators/operator_sdk/golang/osdk-golang-tutorial.html#osdk-golang-controller-configs_osdk-golang-tutorial
[2] https://camel.apache.org/camel-k/next/installation/advanced/multi.html

On Mon, Jun 26, 2023 at 9:57 AM Christoph Weiss <christoph.we...@de.ibm.com>
wrote:

> I am new to the Go language – thus following question might be stupid (but
> I hope not … 😉);
>
> The Camel-K Operator includes multiple controllers. Further my assumption
> is that the Operator itself runs multiple threads and can execute the
> controllers in parallel.
> Is this understanding correct?
>
> And if yes: is there anyway to manage / configure the number of used
> threads?
>
>
>
>
>
>
>
>

Reply via email to