Hello Johan!

In my case compilation is successful. I checked and I see that std_algo.h
was included through another standard header <functional> which was
included through cluster_connection.h. It could be somehow version or/and
environment related (I checked with gcc 13.3 on Ubuntu 24). Anyway, the
proper way to deal with this is to include this header explicitly.

Have you created a corresponding ticket in Jira, if not I will create it
myself.

Thank you!


P.S. Regarding the Go client: I don't have an answer but  you might want to
repeat your question with the correct email subject.

On Sat, 29 Nov 2025 at 13:22, Johan <[email protected]> wrote:

> Hello,
>
> I have this environment :
> Debian 13.2, gcc 14.2.0-19, cmake 3.31.6-2
>
> And I try to compile ignite 3.1.0 cpp client with the following :
> git clone https://github.com/apache/ignite-3.git
> cd ignite-3 && git checkout 3.1.0
> cd /modules/platforms/cpp/
> mkdir cmake-build-release && cd cmake-build-release
> cmake .. -DCMAKE_BUILD_TYPE=Release
> cmake --build . -j8
>
> The build crash with this error :
> ~/ignite-3/modules/platforms/cpp/ignite/client/detail/cluster_connection.cpp:
> In member function ‘virtual void
> ignite::detail::cluster_connection::on_message_received(uint64_t,
> ignite::bytes_view)’:
> ~/ignite-3/modules/platforms/cpp/ignite/client/detail/cluster_connection.cpp:171:24:
> error: no matching function for call to
> ‘find(std::vector<ignite::uuid>::const_iterator,
> std::vector<ignite::uuid>::const_iterator, ignite::uuid&)’
>   171 |     auto it = std::find(cluster_ids.begin(), cluster_ids.end(),
> *current_cluster_id);
>       |
>  ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> I have no ease with c++ ; but asking help to AI, we came up with this,
> which made client compile successfully :
>
> -------------------------------------------------------------------------------
> --- a/modules/platforms/cpp/ignite/client/detail/cluster_connection.cpp
> +++ b/modules/platforms/cpp/ignite/client/detail/cluster_connection.cpp
> @@ -26,6 +26,7 @@
>  #include "ignite/protocol/writer.h"
>
>  #include <iterator>
> +#include <algorithm>
>
>  namespace ignite::detail {
>
> @@ -168,7 +169,15 @@ void cluster_connection::on_message_received(uint64_t
> id, bytes_view msg) {
>      }
>
>      const auto &cluster_ids = context.get_cluster_ids();
> -    auto it = std::find(cluster_ids.begin(), cluster_ids.end(),
> *current_cluster_id);
> +    auto it = cluster_ids.end();
> +
> +    const ignite::uuid& target = current_cluster_id.value();
> +
> +    it = std::find_if(cluster_ids.begin(), cluster_ids.end(),
> +                        [&target](const ignite::uuid& id) {
> +                            return id == target;
> +                        });
> +
>      if (it == cluster_ids.end()) {
>          std::stringstream message;
>          message << "Node from unknown cluster: current_cluster_id=" <<
> *current_cluster_id << ", node_cluster_ids=["
>
> -------------------------------------------------------------------------------
>
> What do you think ? Could this be included upstream, or is there a cleaner
> way to fix the build?
>
> As a background, i am trying to have a golang way to use ignite-3 client.
> Maybe using cgo, or native, we'll see.
> I worked on https://github.com/yo000/ignite-go-client and use it in some
> tools with ignite 2.17 instances.
> Do you know of any golang work in progress ?
>
> Regards

Reply via email to