[vz-dev] doppelte timestamps im api-protokoll

Thorben Thuermer r00t at constancy.org
Mon Dec 17 21:53:37 CET 2012


Hallo,

um das problem aus dem anderen thread:
"[400] PDOException: SQLSTATE[23000]: Integrity constraint violation:
 1062 Duplicate entry ... for key 'ts_uniq'"
endgueltig zu beheben, ist etwas entwicklugnsarbeit noetig.

problem:
mehrere werte mit gleichem timestamp landen in der api.
das api-protokoll sieht (soweit ich das sehe) momentan nicht vor,
dem client mitzuteilen:
- das ein retry keinen sinn macht.
- welcher der werte aus einem request mit mehreren werten das problem
  verursacht.

im moment fuehrt das zB dazu, das vzlogger den wert immer wieder uebermittelt,
was jedesmal fehlschlaegt - es werden keine daten mehr geloggt.

es gibt eine vielzahl moeglicher ursachen:
- d0/sml-telegramme kommen (zB aufgrund stockender uebertragung)
  so schnell an, dass die timestamps identisch werden:
  http://www.mail-archive.com/volkszaehler-dev@lists.volkszaehler.org/msg00943.html
  (zum reproduzieren sollte es reichen, vzlogger fuer die dauer mehrerer
   telegramme per ctrl-z/`cont` anzuhalten/fortzusetzen.)
- s0-impule koennten zB auch zu schnell kommen,
  insbesondere zB bei verwendung von server-timestamps, wenn sich ein backlog von
  requests anstaut, die dann in sehr kurzem abstand verarbeitet werden.
- die antwort auf einen vorherigen api-request geht verloren, obwohl die daten
  eingetragen wurden (zB durch zusammenbruch der netzwerkverbindung)
- ... und sicher noch weitere ...

die probleme lassen sich zT jeweils einzeln beheben:
- in vzlogger einen mindest-abstand der telegramme erzwingen
- s0-impule die zusammenfallen serverseitig zusammenfassen
- den fehler ignorieren, wenn sowohl timestamp als auch value identisch sind
(das muss dann aber auch alles jeweils implementiert werden.)

aber ansonsten muss denke ich auch eine allgemeine loesung her...

vorschlaege?

- Thorben


More information about the volkszaehler-dev mailing list