[Frage] Cache-Problem in Fluid/Extbase (empty objects) [Gelöst]

  • liesmar liesmar
    T3PO
    0 x
    7 Beiträge
    0 Hilfreiche Beiträge
    01. 05. 2014, 22:47

    Liebe Community!

    Seit dem Upgrade von Typo3 4.6 auf 6.1.4 verhält sich unsere Extension (Wochenplanverwaltung) etwas merkwürdig. Anhand der aktuellen Woche und Jahr wird der jeweilige Wochenplan aus dem Repository aufgerufen. Das funktioniert auch wunderbar, doch alle paar Tage hat das übergebene Objekt keine Werte (f:debug zeigt die korrekte UID und PID an, die restlichen Felder sind allerdings leer, obwohl das gleiche Objekt im Backend mit allen Werten vollständig angezeigt wird.)

    Leider konnten wir noch nicht ausfindig machen, welches Ereignis diesen Zustand verursucht. Einzige Abhilfe ist derzeit, alle Caches im Backend zu löschen. Danach funktioniert die Extension wieder für einige Tage. Auch die Konfiguration von no_cache=1 löst das Problem leider nicht.

    Die Controller-Action:
    [code]public function showAction($plan = null) {
    if(isset($plan)){
    $this->view->assign('plan', $plan);
    }else{
    $kw = intval(date('W')) + intval($this->settings['weekShift']);

    $plan = $this->planRepository->planKw($kw, intval(date('Y')), $this->settings['building']);
    $this->view->assign('plan', $plan);
    }
    }
    [/code]

    Ich hoffe, ihr könnt mir helfen!
    Marlies

  • frederic.gaus frederic....
    TYPO3-Anwärter
    1 x
    4 Beiträge
    1 Hilfreiche Beiträge
    14. 10. 2014, 14:28 - Lösung

    Hallo zusammen,

    der Fehler trat bei uns auch auf. Danke für den entscheidenden Hinweis auf die cf_extbase_datamapfactory_datamap. Diese Cache-Tabelle wurde in unserem Fall falsch aufgebaut, falls auf ein Extbase-Repository zugegriffen wurde bzw. ein Extbase-Model geladen oder geschrieben wurde, und das TCA nicht korrekt geladen ist. In unserem Fall war das innerhalb einer eID-Funktionalität der Fall.

    Im Prinzip handelt es sich um einen TYPO3-Core Bug. Die Cache-Tabelle darf nicht befüllt werden, falls das TCA nicht (komplett) geladen wurde. Vor dem Füllen der Tabelle muss auf jedem Fall ein EidUtility::initTCA (); aufgerufen sein.

    Abhilfe hilft es ggf, diesen Aufruf innerhalb der eigenen Extension zu platzieren.


  • denyo256 denyo256
    Padawan
    0 x
    32 Beiträge
    0 Hilfreiche Beiträge
    14. 09. 2014, 09:36

    Hallo liesmar,

    ich habe eben deinen Thread gefunden, weil ich vor dem gleichen Problem. Solange die Tabelle cf_extbase_datamapfactory_datamap bei mir leer ist, funktioniert meine Extension einwandfrei
    Sobald aber das Mapping gespeichert wird, bekomme ich beim Erstellen von Objekten nur leere Felder bis auf pid und uid.

    Vielleicht kommen wir ja gemeinsam auf die Lösung.

    Grüße
    Daniel

  • tronic tronic
    TYPO3-Anwärter
    0 x
    4 Beiträge
    0 Hilfreiche Beiträge
    17. 09. 2014, 13:25

    Hallo zusammen,

    melde mich nun auch wieder zurück.
    Folgende neue Erkenntnisse:
    Sobald der Cache in der php.ini erhöht wird, taucht der Fehler nicht mehr in dem Ausmaße auf. Das ist schon relativ verwunderlich...

    Wie viel Datensätze habt ihr in der DB?
    Ich habe insgesamt 3 Tabellen für meine Ext.(Umfang an Datensätze: ca. 3k, 16k und 38k)

    p.s. Habe zwischenzeitlich noch eine Bereinigung durchgeführt. Es gab Datensätze, die zu keiner pid zugewiesen wurden.

    Besten Gruß

    tronic

  • frederic.gaus frederic....
    TYPO3-Anwärter
    1 x
    4 Beiträge
    1 Hilfreiche Beiträge
    14. 10. 2014, 14:28

    Hallo zusammen,

    der Fehler trat bei uns auch auf. Danke für den entscheidenden Hinweis auf die cf_extbase_datamapfactory_datamap. Diese Cache-Tabelle wurde in unserem Fall falsch aufgebaut, falls auf ein Extbase-Repository zugegriffen wurde bzw. ein Extbase-Model geladen oder geschrieben wurde, und das TCA nicht korrekt geladen ist. In unserem Fall war das innerhalb einer eID-Funktionalität der Fall.

    Im Prinzip handelt es sich um einen TYPO3-Core Bug. Die Cache-Tabelle darf nicht befüllt werden, falls das TCA nicht (komplett) geladen wurde. Vor dem Füllen der Tabelle muss auf jedem Fall ein EidUtility::initTCA (); aufgerufen sein.

    Abhilfe hilft es ggf, diesen Aufruf innerhalb der eigenen Extension zu platzieren.

  • tronic tronic
    TYPO3-Anwärter
    0 x
    4 Beiträge
    0 Hilfreiche Beiträge
    26. 10. 2014, 02:24

    Danke für den Hinweis! Werde ich bei mir einbauen.

  • tronic tronic
    TYPO3-Anwärter
    0 x
    4 Beiträge
    0 Hilfreiche Beiträge
    13. 11. 2014, 00:12

    Kurze Rückmeldung:
    Nach nun etwas über 2 Wochen gab es keine Probleme mehr. In meinem Fall hat das Initialisieren des TCA in meinem AJAX-Dispatcher wunderbar funktioniert.

    Danke!

  • liesmar liesmar
    T3PO
    0 x
    7 Beiträge
    0 Hilfreiche Beiträge
    13. 11. 2014, 00:19

    Der Aufruf von EidUtility::initTCA (); hat das Problem bei mir ebenfalls beseitigt - den Code wurde vor ca. einer Woche eingefügt und das fehlerhafte Caching trat seitdem nicht mehr auf.

    Vielen Dank für alle Hinweise!

  • iryvkin iryvkin
    TYPO3-Anwärter
    0 x
    4 Beiträge
    0 Hilfreiche Beiträge
    16. 02. 2015, 17:42

    An welcher Stelle, bitte, in der Extension sollte EidUtility::initTCA () in der Extension eingebaut werden?