Initial UnknownHostException is Unrecoverable
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Anfängerfreundlichkeit
- 45/100
- Issue-Typ
- Bug
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Veraltet
- Tech-Stack
- java
- Bereich
- networking
Rechercherichtung
Beginne mit dem Konstruktor von RawSocketSender und seiner Methode connect(), insbesondere damit, wie die Serveradresse gespeichert und wiederverwendet wird. Überprüfe das Verhalten, wenn die anfängliche Hostnamenauflösung fehlschlägt und wenn sich DNS während des Failovers ändert; abgeschlossen ist die Aufgabe, wenn die Wiederverbindung die aktuelle Hostnamenauflösung statt einer alten aufgelösten Adresse verwendet.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
The RawSocketSender takes a host and port in its constructor and coverts these into an InetSocketAddress, which tries to resolve the hostname. On RawSocketSender connect this InetSocketAddress is used to reconnect, but if it wasn't resolved during fluent-logger init then it will fail over and over. The code snipped from RawSocketSender is below:
public RawSocketSender(String host, int port, int timeout, int bufferCapacity, Reconnector reconnector) {
msgpack = new MessagePack();
msgpack.register(Event.class, Event.EventTemplate.INSTANCE);
pendings = ByteBuffer.allocate(bufferCapacity);
server = new InetSocketAddress(host, port); // Create InetSocketAddress on init
this.reconnector = reconnector;
name = String.format("%s_%d_%d_%d", host, port, timeout, bufferCapacity);
this.timeout = timeout;
}
private void connect() throws IOException {
try {
socket = new Socket();
socket.connect(server, timeout); // Reconnection uses pre-resolved server field
out = new BufferedOutputStream(socket.getOutputStream());
} catch (IOException e) {
throw e;
}
}
This issue comes up when using the fluent-logger in a highly dynamic environment (like on Docker Swarm) where apps may come up before a DNS entry in Consul is even resolvable. It also means that during failover of a Fluent host (triggering a DNS change) the then failing socket connection will always try the old Fluent host IP and never re-resolve the DNS entry.
My recommendation is to store the Fluent host and port as private fields within the RawSocketSender, not a resolved InetSocketAddress (now stored as this.server) and create a new InetSocketAddress on every socket connection.
I understand there will be performance implications of this and am happy to submit a PR, but wanted to bring it up in an issue in case there were reasons for implementing the RawSocketSender the current way.
- Vorherrschende Sprache
- Java
- Sterne
- 210
- Forks
- 86
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Entwicklungsumgebung
Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus fluent/fluent-logger-java
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 45/100
fluent/fluent-logger-java#100 ·
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 15/100
fluent/fluent-logger-java#99 · 1 Kommentar · 2 Reaktionen ·
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 45/100
fluent/fluent-logger-java#98 · 1 Kommentar ·
-
Null Pointer Exception with slf4j-log4j12-1.7.30 (Fluent-logger incompatible with the new version)Offen
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 42/100
fluent/fluent-logger-java#89 · 3 Kommentare ·
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 25/100
fluent/fluent-logger-java#88 · 1 Kommentar ·
Alle Issues in fluent/fluent-logger-java
Ähnliche Issues
-
approved bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
checkstyle/checkstyle#21981 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Build: the CUDA backend fails without cuDNN instead of skipping the cuDNN shim (as the cuDF shim does)Evtl. vergeben Ein verknüpfter Pull Request ist offen oder bereits gemergt. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
beehive-lab/TornadoVM#1248 ·
Maintainer antworten meist innerhalb von 1 Tag
-
good first issue help wanted ready-for-human
Schwierigkeit 2/5 Ein halber Tag Anfängerfreundlichkeit 64/100
Maintainer antworten meist innerhalb von 1 Tag
-
bug jdbc-v2
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
ClickHouse/clickhouse-java#3214 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Java and Kotlin (JVM): parse gradle/wrapper/gradle-wrapper.properties with exact line locationsOffenarea: detector eco: java help wanted lane: free-agent roadmap size: S type: parser
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
arminazimi/evergreen#355 ·
Maintainer antworten meist innerhalb von 1 Tag