Warum bereinigt Flock die Sperrdatei nicht?

Warum bereinigt Flock die Sperrdatei nicht?

Nachdem der Vorgang abgeschlossen ist, sehe ich, dass die Sperrdatei nicht gelöscht wurde. Gibt es einen Grund, warum die flockDatei aufbewahrt wird? Und woher flockweiß ich, ob eine Sperre erworben wurde?

Hier ist das Beispiel aus einer crontabDatei

* * * * * flock python <script_name>.py

Antwort1

Für die meisten Anwendungsfälle von flockist es sehr wichtig, dass die Sperrdateinicht"bereinigt" werden. Andernfalls stellen Sie sich dieses Szenario vor:

  • Prozess A öffnet die Sperrdatei, stellt fest, dass sie nicht existiert, und erstellt sie.
  • Prozess A erwirbt die Sperre
  • Prozess B öffnet das Schloss (stellt fest, dass es bereits existiert)
  • Prozess B versucht, die Sperre zu erhalten, muss aber warten
  • Prozess A löst die Sperre
  • Prozess B erhält die Sperre sofort
  • Prozess A löscht die Sperrdatei
  • Prozess C öffnet die Sperrdatei, stellt fest, dass sie nicht existiert, und erstellt eine neue. Beachten Sie, dass er jetzt eineandersSperrdatei, die von Prozess B gesperrt wurde.
  • Prozess C versucht, die Sperre zu erhalten, und hat Erfolg … aber er hätte warten müssen, da bei Prozess B die Sperrdatei [eine frühere Version] noch immer geöffnet und gesperrt ist.

verwandte Informationen