Files
michaelschiemer/tests/Framework/Discovery/Storage/TIMESTAMP_MIGRATION.md
2025-11-24 21:28:25 +01:00

1.5 KiB

Timestamp Migration - Status

Abgeschlossen

CacheEntry

  • Verwendet jetzt Timestamp statt DateTimeInterface
  • toArray() serialisiert als int timestamp
  • fromArray() deserialisiert von int, float, string oder DateTimeInterface

Services

  • StalenessChecker konvertiert Timestamp zu DateTimeInterface für Vergleich
  • CacheEntryUpgrader konvertiert DateTimeInterface zu Timestamp
  • CacheEntrySerializer verwendet Timestamp::now() für Fallbacks

DiscoveryCacheManager

  • Konvertiert DiscoveryContext->startTime (DateTimeInterface) zu Timestamp beim Erstellen von CacheEntry
  • Konvertiert Timestamp zu DateTimeInterface für CacheEntryMetadata

⚠️ Bekanntes Problem

Registry Deserialization

Problem: Registry wird als __PHP_Incomplete_Class deserialisiert

Ursache:

  • Cache serialisiert das Array mit Registry-Objekt
  • Beim Deserialisieren wird Registry zu __PHP_Incomplete_Class, wenn die Klasse nicht geladen ist
  • Dies passiert, wenn unserialize() aufgerufen wird, bevor die Klasse geladen ist

Mögliche Lösungen:

  1. Registry explizit serialisieren, bevor es in Array eingefügt wird
  2. Cache-Serializer so konfigurieren, dass er Klassen automatisch lädt
  3. Registry-Objekt separat serialisieren und als String im Array speichern

Status: In Bearbeitung

Nächste Schritte

  1. Registry-Deserialisierung Problem lösen
  2. Integration-Tests debuggen
  3. Performance-Tests mit Timestamp