Storable.pm - beim Speichern in nicht abgeschnittene Datei beschädigt

9

In meiner Produktionsumgebung haben wir das gehabt, was wir glauben korrupter speicherbarer Hash, erstellt von Storable.pm. Ich bin nicht in der Lage, das Verhalten in Dev zu replizieren, was es schwierig gemacht hat, genau zu diagnostizieren.

Der Code hat lange gearbeitet, und die Änderung, die es gemacht hat Pause löschte aus dem Hash. Bis vor kurzem auch das Hash blieb gleich groß oder wuchs.

Die Datei wird in readwrite geöffnet, und dann schreibt store_fd in die Datei. Da der Hash jetzt (manchmal) kleiner ist, wird er 1000 Byte schreiben diese 2000-Byte-Datei. Die Tail-1000-Bytes sind alte Mülldaten. In meinem Testfälle, wenn ich den Hash abrufen, werden die Mülldaten ignoriert, als erwartet.

%Vor%

Meine Fragen:

  1. Sollte das funktionieren oder ist es so? zwingend, dass ich die Datei abschneide?
  2. Verwendet der gespeicherte Hash eine Art? von Dateiabschlusszeichen? Wenn ja, Was ist es?
  3. Der obige Code, Löschen und Hinzufügen und Löschen und Hinzufügen, Funktioniert perfekt in meinem Testfall. Kann Sie schlagen eine Testfallsequenz vor das könnte dazu führen, dass es aufgrund von fehlschlägt die nicht abgeschnittene Datei? (Ich weiß das ist eine sehr vage Frage, also fühle frei, es zu ignorieren).
Brock 24.11.2010, 01:02
quelle

2 Antworten

1

Ich weiß nicht, wie gut Storable mit nachkommendem Müll umgehen kann, aber es kann nicht schaden,

hinzuzufügen %Vor%

nach dem Aufruf von store_fd , beseitigt alle Zweifel darüber, ob es jetzt und in Zukunft damit umgehen kann.

    
Peter S. Housel 03.12.2010 00:21
quelle
0

Entschuldigung, ich dachte, ich hätte das aktualisiert.

Ich habe Perl5-Träger gefragt und Antworten auf die Frage bekommen.

Ich habe das Update nicht implementiert, da ich es nicht im Test replizieren kann, also möchte ich nicht zu meiner Produktionsumgebung wechseln, meine Arbeit ist im Moment sicherer.

Das Abschneiden ist definitiv eine gute Idee, basierend auf den Antworten von perl5-porters.

Ich wusste nicht, dass jemand eine Frage zu meiner Frage gestellt hat (oder könnte!).

    
Brock 03.12.2010 04:18
quelle

Tags und Links