scylladb / seastar

High performance server-side application framework
http://seastar.io
Apache License 2.0
8.38k stars 1.55k forks source link

http/client: make `abort_source` passed to connection_factory::make() optional #2428

Closed tchaikov closed 2 months ago

tchaikov commented 2 months ago

in 35badf56f1, we added abortable make_request() API. and added an abort_source pointer to connection_factory::make(), but this broke the build of existing classes which inherit from connection_factory. as they don't implement a make() with this parameter:

In file included from /home/kefu/dev/scylladb/tools/scylla-nodetool.cc:52:
/home/kefu/dev/scylladb/utils/http.hh:67:38: error: 'make' marked 'override' but does not override any member functions
   67 |     virtual future<connected_socket> make() override {
      |                                      ^
In file included from /home/kefu/dev/scylladb/tools/scylla-nodetool.cc:11:
In file included from /usr/lib/gcc/x86_64-redhat-linux/14/../../../../include/c++/14/chrono:49:
In file included from /usr/lib/gcc/x86_64-redhat-linux/14/../../../../include/c++/14/bits/shared_ptr.h:53:
In file included from /usr/lib/gcc/x86_64-redhat-linux/14/../../../../include/c++/14/bits/shared_ptr_base.h:59:
/usr/lib/gcc/x86_64-redhat-linux/14/../../../../include/c++/14/bits/unique_ptr.h:1076:34: error: allocating an object of abstract class type 'utils::http::dns_connection_factory'
 1076 |     { return unique_ptr<_Tp>(new _Tp(std::forward<_Args>(__args)...)); }
      |                                  ^
/home/kefu/dev/scylladb/tools/scylla-nodetool.cc:185:28: note: in instantiation of function template specialization 'std::make_unique<utils::http::dns_connection_factory, seastar::basic_sstring<char, unsigned int, 15> &, unsigned short &, bool, seastar::logger &>' requested here
  185 |         , _api_client(std::make_unique<utils::http::dns_connection_factory>(_host, _port, false, nlog), 1)
      |                            ^
/home/kefu/dev/scylladb/seastar/include/seastar/http/client.hh:155:38: note: unimplemented pure virtual method 'make' in 'dns_connection_factory'
  155 |     virtual future<connected_socket> make(abort_source*) = 0;
      |                                      ^

in this change, in order to fix the build, let's make this parameter optional.

Refs 35badf56f1 Signed-off-by: Kefu Chai kefu.chai@scylladb.com

tchaikov commented 2 months ago

nah, this does address the problem.