[vz-users] Stromdaten werden mit 4 Stündiger Verspätung angezeigt

Matthias Behr mbehr at mcbehr.de
Sun May 3 14:21:02 CEST 2015


Hi,

tatsächlich. Dann ist die "integrity constraint violation" wohl was anderes. (oder die DB/Middleware hat neue Fehler-Codes.)

Gruß
Matthias

Sent from a mobile device.

> Am 03.05.2015 um 13:15 schrieb Andreas Goetz <cpuidle at gmail.com>:
> 
> Hi Matthias,
> 
> keine Schnellschüsse. Der Code den Du suchst existiert schon. 
> 
> 2015-05-02 23:19 GMT+02:00 Matthias Behr <mbehr at mcbehr.de>:
>> Hi,
>> 
>> ok. Die Kombination Channel/Timestamp ist unique-Key?
>> 
>> Dann müssen wir das Fehlerhandling im vzlogger daraufhin verbessern. Ich schaue mir das mal an.
> 
>     void vz::api::Volkszaehler::api_parse_exception(CURLresponse response, char *err, size_t n) {
>         struct json_tokener *json_tok;
>         struct json_object *json_obj;
> 
>         json_tok = json_tokener_new();
>         json_obj = json_tokener_parse_ex(json_tok, response.data, response.size);
> 
>         if (json_tok->err == json_tokener_success) {
>           bool found = json_object_object_get_ex(json_obj, "exception", &json_obj);
>           if (found && json_obj) {
>             struct json_object *j2;
>             std::string err_type;
>             if (json_object_object_get_ex(json_obj, "type", &j2)){
>                 err_type = json_object_get_string(j2);
>               }
>               std::string err_message;
>               if (json_object_object_get_ex(json_obj, "message", &j2)){
>                 err_message = json_object_get_string(j2);
>               }
>               snprintf(err, n, "'%s': '%s'", err_type.c_str(), err_message.c_str());
>               // evaluate error
>               if (err_type == "UniqueConstraintViolationException") {
>                   if (err_message.find("Duplicate entry") ) {
>                       print(log_warning, "Middleware says duplicated value. Removing first entry!", channel()->name());
>                       _values.pop_front();
>                   }
>               }
>           }
>           else {
>               strncpy(err, "Missing exception", n);
>           }
>         }
>         else {
>             strncpy(err, json_tokener_error_desc(json_tok->err), n);
>         }
> 
>         json_object_put(json_obj);
>         json_tokener_free(json_tok);
>     }
> 
> Vielleicht schauen wir uns das in 2 Wochen mal gemeinsam an?
> 
> @Patrick: mich wundert die Exception dennoch, eigentlich müsste das eine UniqueConstraintViolationException sein die dann auch vom Code oben behandelt würde. Ist das eine neue Installation der Middleware oder eine alte? Kannst Du mal bitte Deine composer.lock posten?
> 
> Viele Grüße,
> Andreas
>  
>> 
>> > Am 02.05.2015 um 08:08 schrieb Andreas Götz <cpuidle at gmail.com>:
>> >
>> > Moin,
>> >
>> >> Am 01.05.2015 um 23:14 schrieb Matthias Behr <mbehr at mcbehr.de>:
>> >>
>> >> Der Code ist aus dem Logger.
>> >> Aus meiner Sicht darf timestamp nicht als unique-key in der Datenbank definiert sein.
>> >
>> > Ist es doch auch nicht. Aber timestamp/channel_id ist sehr wohl unique und das wird vom Logger auch abgefangen. Hat doch aber alles nix mit dem Ursprungsproblem von Viper zu tun?
>> >
>> > Viele Grüße, Andreas
>> >
>> >>
>> >>> Am 01.05.2015 um 23:11 schrieb Andreas Götz <cpuidle at gmail.com>:
>> >>>
>> >>> Hi Matthias,
>> >>>
>> >>>
>> >>>> Am 01.05.2015 um 21:58 schrieb Matthias Behr <mbehr at mcbehr.de>:
>> >>>>
>> >>>> Hier das ursprüngliche Problem. Es gibt Curl Fehler, weil offensichtlich ein timestamp bereits in der DB vorliegt. Der akt. Code versucht das dann immer wieder -> hat nie wieder Erfolg.
>> >>>> timestamp (da ja in ms Auflösung) darf nicht als unique-key definiert sein. Frage ist, ob das Install-Skript das so anlegt.
>> >>>>
>> >>>>
>> >>>>>>> (Auszug)
>> >>>> Wenn es aus irgendeinem Grund (Integrity constraint violation: 1062???) zu einem Fehler kommt, dann wird versucht, diese Werte erneut an die Middleware zu schicken. Wenn es aber ein Werte Paar gibt, welches immer einen Fehler erzeugt, dann werden diese immer werden versucht und es wird nie mehr klappen.
>> >>>
>> >>> Ich bin total lost. Irgendwo gibt es Code der eine UniqueConstraintViolation abfängt- der fehlt unten.
>> >>>
>> >>> Und was ist jetzt das Problem- Fehler in den Indizes bei der MW oder beim Handling im Logger?
>> >>>
>> >>> Viele Grüße, Andreas
>> >>>
>> >>>>
>> >>>> D.h. das Fehlermanagement in Volkszaehler.cpp sollte überdacht werden.
>> >>>>
>> >>>>
>> >>>> akt. Code (_values.clear() nur im Ok Fall):
>> >>>>
>> >>>> // check response
>> >>>> if (curl_code == CURLE_OK && http_code == 200) { // everything is ok
>> >>>>     print(log_debug, "CURL Request succeeded with code: %i", channel()->name(), http_code);
>> >>>>     _values.clear();
>> >>>>     // clear buffer-readings
>> >>>>     //channel()->buffer.sent = last->next;
>> >>>> }
>> >>>> else { // error
>> >>>>     if (curl_code != CURLE_OK) {
>> >>>>         print(log_error, "CURL: %s", channel()->name(), curl_easy_strerror(curl_code));
>> >>>>     }
>> >>>>     else if (http_code != 200) {
>> >>>>         char err[255];
>> >>>>         api_parse_exception(response, err, 255);
>> >>>>         print(log_error, "CURL Error from middleware: %s", channel()->name(), err);
>> >>>>     }
>> >>>> }
>> >>>>
>> >>>>
>> >>>>
>> >>>>> Am 01.05.2015 um 21:50 schrieb Andreas Götz <cpuidle at gmail.com>:
>> >>>>>
>> >>>>> Mir fehlt der Mittelteil- was ist los?
>> >>>>>
>> >>>>> Viele Grüße, Andreas
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>>> Am 01.05.2015 um 20:11 schrieb Viper <viper at viper1.de>:
>> >>>>>>
>> >>>>>> Kann ich das irgendwie ändern?
>> >>>>>>
>> >>>>>> Am 1. Mai 2015 19:53:50 MESZ, schrieb Matthias Behr <mbehr at mcbehr.de>:
>> >>>>>>> Da ist auch schon der Fehler:
>> >>>>>>>
>> >>>>>>> timestamp darf nicht data_unique sein.
>> >>>>>>>
>> >>>>>>> @Andig: ist das so gewollt? Macht das Install-Skript das so?
>> >>>>>>>
>> >>>>>>>> Am 01.05.2015 um 18:32 schrieb Viper <viper at viper1.de>:
>> >>>>>>>>
>> >>>>>>>> Glaube ich habe es geschafft:
>> >>>>>>>>
>> >>>>>>>> Tabelle
>> >>>>>>>> Datensätze 1 - 4 von insgesamt 4    <<    <    >    >>
>> >>>>>>>>
>> >>>>>>>> Ansicht: kompakt
>> >>>>>>>
>> >>>>>>> Die Abfrage enthält 13 Spalten
>> >>>>>>>> #    <blank.gif> Table    <blank.gif> Non_unique    <blank.gif>
>> >>>>>>> Key_name    <blank.gif> Seq_in_index    <blank.gif> Column_name    <blank.gif>
>> >>>>>>> Collation    <blank.gif> Cardinality    <blank.gif> Sub_part    <blank.gif>
>> >>>>>>> Packed    <blank.gif> Null    <blank.gif> Index_type    <blank.gif>
>> >>>>>>> Comment    <blank.gif> Index_comment
>> >>>>>>>> 1.
>> >>>>>>>> data
>> >>>>>>>> 0
>> >>>>>>>> PRIMARY
>> >>>>>>>> 1
>> >>>>>>>> id
>> >>>>>>>> A
>> >>>>>>>> 13651
>> >>>>>>>> NULL
>> >>>>>>>> NULL
>> >>>>>>>>
>> >>>>>>>> BTREE
>> >>>>>>>>
>> >>>>>>>>
>> >>>>>>>> 2.
>> >>>>>>>> data
>> >>>>>>>> 0
>> >>>>>>>> data_unique
>> >>>>>>>> 1
>> >>>>>>>> channel_id
>> >>>>>>>> A
>> >>>>>>>> 2
>> >>>>>>>> NULL
>> >>>>>>>> NULL
>> >>>>>>>> YES
>> >>>>>>>> BTREE
>> >>>>>>>>
>> >>>>>>>>
>> >>>>>>>> 3.
>> >>>>>>>> data
>> >>>>>>>> 0
>> >>>>>>>> data_unique
>> >>>>>>>> 2
>> >>>>>>>> timestamp
>> >>>>>>>> A
>> >>>>>>>> 13651
>> >>>>>>>> NULL
>> >>>>>>>> NULL
>> >>>>>>>>
>> >>>>>>>> BTREE
>> >>>>>>>>
>> >>>>>>>>
>> >>>>>>>> 4.
>> >>>>>>>> data
>> >>>>>>>> 1
>> >>>>>>>> IDX_ADF3F36372F5A1AA
>> >>>>>>>> 1
>> >>>>>>>> channel_id
>> >>>>>>>> A
>> >>>>>>>> 2
>> >>>>>>>> NULL
>> >>>>>>>> NULL
>> >>>>>>>> YES
>> >>>>>>>> BTREE
>> >>>>>>>>
>> >>>>>>>>
>> >>>>>>>>
>> >>>>>>>> Datensätze 1 - 4 von insgesamt 4    <<    <    >    >>
>> >>>>>>>>
>> >>>>>>>> Habe auch das Dump File angehängt.
>> >>>>>>>>
>> >>>>>>>>> Am 30.04.2015 um 22:43 schrieb Matthias Behr:
>> >>>>>>>>> show index from
>> >>>>>>>>
>> >>>>>>>> <dumpD0.txt>
>> >>>>>>>
>> >>>>>>> Gruß
>> >>>>>>>
>> >>>>>>> Matthias
>> >>>>>>
>> >>>>>> --
>> >>>>>> Diese Nachricht wurde von meinem Android-Mobiltelefon mit K-9 Mail gesendet.
>> >>>>
>> >>>> Gruß
>> >>>>
>> >>>> Matthias
>> >>
>> >> Gruß
>> >>
>> >> Matthias
>> >>
>> 
>> Gruß
>> 
>> Matthias
>> 
> 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://demo.volkszaehler.org/pipermail/volkszaehler-users/attachments/20150503/b65d067d/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2342 bytes
Desc: not available
URL: <http://demo.volkszaehler.org/pipermail/volkszaehler-users/attachments/20150503/b65d067d/attachment.bin>


More information about the volkszaehler-users mailing list