preRegisterPrimary legte unbedingt eine Platzhalter-Zeile fuer den Primary an. Sobald der Primary sich aber selbst gemeldet hat, existiert bereits eine Zeile mit seiner ECHTEN Node-ID und demselben FQDN — und UpsertSelf nutzt ON CONFLICT (id), greift also nicht. Die Synthetik-ID "prenode-<fqdn>" lief damit in den fqdn-Unique-Index: duplicate key value violates unique constraint "ha_nodes_fqdn_unique" bei JEDEM API-Start auf dem Standby. Folgenlos — die echte Zeile ist ja korrekt und der Firewall-Reload lief trotzdem — aber es sah nach einem Defekt aus und verdeckte echte Warnungen im selben Log. Jetzt wird zuerst die IP einer vorhandenen Zeile aufgefrischt (mehr will die Funktion gar nicht) und nur bei RowsAffected()==0 der Platzhalter angelegt — also genau dann, wenn der Primary sich noch nie gemeldet hat. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
9.5 KiB
9.5 KiB