[vz-dev] Request failed: [400] PDOException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry ... for key 'ts_uniq'

Thorben Thuermer r00t at constancy.org
Mon Dec 17 21:10:16 CET 2012


On Sat, 15 Dec 2012 22:38:06 +0100 xdiwi <xdiwi at gmx.net> wrote:
> Am 15.12.2012 22:30, schrieb Thorben Thuermer:
> > On Sat, 15 Dec 2012 22:21:48 +0100 xdiwi <xdiwi at gmx.net> wrote:
> >> Am 15.12.2012 22:00, schrieb Thorben Thuermer:
> >>> On Sat, 15 Dec 2012 21:45:49 +0100 xdiwi <xdiwi at gmx.net> wrote:
> >>>> Es kommt immer wieder zu obiger Fehlermeldung.
> >>> die meldung bedeutet einfach, das versucht wurde zwei werte mit identischem
> >>> zeitstempel in die datenbank einzutragen.
> > es kann sein, das vzlogger wegen dem fehler immer wieder versucht,
> > die gleichen daten aus seinem puffer einzutragen -
> > das ist dann tatsaechlich ein bug.
> Ich habe gerade mal das Log-File durchgeschaut und ja, vzlogger versucht 
> immer wieder die selben Daten mit dem selben Timestamp zu loggen!

als workaround, bis wir einen korrekten fix zustande bekommen,
koenntest du in vzlogger/src/threads.c ab zeile 201 ("/* check response */")
grosszuegig den code auskommentieren/entfernen/bearbeiten,
so dass unabhaengig von der serverantwort der puffer geleert wird.
(bei einem zaehler der absolute werte liefert, ist es ohnehin nicht so
 kritisch, wenn mal einzelne werte fehlen...)

am einfachsten waehre wohl, folgende zeile einzufuegen:
@@ -210,6 +210,7 @@ void * logging_thread(void *arg) {
                        else {
                                print(log_error, "Request failed: %i", ch, http_code);
                        }
+                       ch->buffer.sent = last->next;
                }
                else {
                        print(log_debug, "Request succeeded: %i", ch, http_code);

(also: auch im fehlerfall den puffer leeren.)

- T.


More information about the volkszaehler-dev mailing list