Seastar: прослушиватели TCP для каждого сегмента не привязываются или автоматически завершают работу на сегментах, отличC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Seastar: прослушиватели TCP для каждого сегмента не привязываются или автоматически завершают работу на сегментах, отлич

Сообщение Anonymous »

Я пытаюсь запустить прослушиватель TCP для каждого сегмента в Seastar, где каждый сегмент привязывается к своему собственному порту (6010 + shard_id). На шарде 0 всё работает — слушатель нормально биндится и принимает соединения. Но в других сегментах прослушиватель либо завершает работу автоматически, либо никогда не отображается как связанный.
Исключения не создаются, и цикл принятия, похоже, не запускается. Раньше я использовал Keep_doing, но затем изменил его на повтор, чтобы убедиться, что повторные попытки цикла принимаются. Кто-нибудь сталкивался с такой же проблемой. Возможно ли это сделать?
Конкретный вариант использования заключается в том, что я хочу отправлять запросы к определенному сегменту на основе хэш-функции. Поскольку Seastar не предоставляет прямого способа маршрутизации входящих сетевых запросов к определенному сегменту, я экспериментирую с маршрутизацией на основе портов, при которой каждый сегмент прослушивает уникальный порт, представляющий его идентификатор сегмента.
Я также создал обсуждение на GitHub.
Вот пример используемого кода:

Код: Выделить всё

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#include 

using namespace seastar;

seastar::future init();
seastar::future start();

int main(int argc, char **argv) {
app_template app;
try {
return app.run(argc, argv, init);
} catch (...) {
std::cerr 

Подробнее здесь: [url]https://stackoverflow.com/questions/79787777/seastar-per-shard-tcp-listeners-not-binding-or-exiting-silently-on-non-0-shards[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»