Seastar: TCP-Listener pro Shard binden sich nicht oder werden auf Nicht-0-Shards stillschweigend beendetC++

Programme in C++. Entwicklerforum
Anonymous
 Seastar: TCP-Listener pro Shard binden sich nicht oder werden auf Nicht-0-Shards stillschweigend beendet

Post by Anonymous »

Ich versuche, in Seastar einen TCP-Listener pro Shard zu starten, bei dem jeder Shard an seinen eigenen Port (6010 + Shard_ID) bindet. Auf Shard 0 funktioniert alles – der Listener bindet und akzeptiert problemlos Verbindungen. Aber auf anderen Shards wird der Listener entweder stillschweigend beendet oder wird nie als gebunden angezeigt.
Es werden keine Ausnahmen ausgelöst und die Akzeptanzschleife scheint nicht zu laufen. Ich hatte früher „keep_doing“ verwendet, wechselte dann aber zu „repeat“, um sicherzustellen, dass Schleifenwiederholungen akzeptiert werden. Hat jemand das gleiche Problem gehabt? Ist das möglich?
Der spezifische Anwendungsfall besteht darin, dass ich Anfragen basierend auf einer Hash-Funktion an einen bestimmten Shard senden möchte. Da Seastar keine direkte Möglichkeit bietet, eingehende Netzwerkanfragen an einen bestimmten Shard weiterzuleiten, experimentiere ich mit portbasiertem Routing, bei dem jeder Shard an einem eindeutigen Port lauscht, der seine Shard-ID repräsentiert.
Ich habe auch eine GitHub-Diskussion erstellt.
Hier ist der verwendete Beispielcode:

Code: Select all

#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

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post