Erneut Syntax Error Knoten-Karte

Fortsetzung der Diskussion von Syntax Error Knoten-Karte:

Hallo zusammen,

im Ticketsystem teilte jemand mit das die Karte beim Aufruf ab und an Fehler meldet.

Hallo,

nachfolgenden Fehler habe ich immer mal wieder beim aufrufen der Karte.
Firefox 46.0.1

SyntaxError: JSON.parse: end of data after property name when ‘:’ was expected at line 1 column 3722450 of the JSON data

hat das die gleiche Ursache wie im verlinkten Thema?

@Fungur

Gruß Marius

Vermutlich. Die JSONs sind nicht immer vollständig, weil sie manchmal unvollständig aus Alfred exportiert werden.

Einfach kurz warten und die Seite nochmal neu laden.

Grüße
Matthias

1 Like

Ist das eine Annahme oder Gewissheit?

In meinem Script, was sich die json Dateien lädt bekomme ich häufiger diese Meldung:

http.client.IncompleteRead: IncompleteRead(3702473 bytes read, 14412 more expected)

D. h. die Größe, die im http Header steht, ist größer als der Inhalt der gesendet wird. Da die content-length jedoch vom nginx bestimmt, entsteht der Fehler irgendwo danach und nicht beim unvollständigen erzeugten der Datei vom Alfred (denn dann wurde Nginx die Datei ja als kleiner bestimmen und es würde ein anderer Fehler (auf den Ebenen darüber) geworfen werden.

Ich mal nachgeschaut, in der nginx.conf (also der “globalen” Konfiguration) ist sendfile on gesetzt. Ich habe jetzt mal in /etc/nginx/sites-available/karte für /data sendfile ausgestellt.

Ich gelobe mir Besserung dadurch, weil nun die datei gebuffert wird, bevor sie gesendet wird, anstatt direkt auf filedescriptors zu arbeiten. Bei den Daten handelt es sich ja eher um Semi-Statische Daten.

PS: Es könnte natürlich immer noch eine unvollständige json Datei ankommen, das ist jedoch sehr viel unwahrscheinlicher, als während der langen Übertragungsphase. Sicherlich ist hier auch noch Optimierungspotential, aber ich bin nicht so deep im nginx business.

1 Like

Vielleicht muss ich die Erzeugung der Dateien noch mal umstellen. Wahrscheinlich werden die Dateien im Moment beim Neu-Erzeugen auf 0 Bytes gekürzt und dann wieder gefüllt. Wenn die Daten gerade zu dem Zeitpunkt gelesen wird, erzeugt das ein EOF und die Datei wird unvollständig ausgeliefert.

Eine Alternative wäre, in eine temporäre Datei zu schreiben und diese dann mit mv an die richtige Stelle zu verschieben. Dadurch sollte dann die alte Datei vorher gelöscht werden, wobei sie aber von Prozessen, die sie noch offen haben, weiterhin gelesen werden kann.

3 Like

Dieses Thema wurde automatisch 3 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Nachrichten mehr erlaubt.