Thread Fehler in Python 3.11

skippa1978

Active member
Hallo Alexander,

ich habe für einen Test Cassandra auf einem frischen Debian 12 System installiert und erhalte beim Starten von Cassandra folgenden Fehler:

Code:
2024-01-28 20:00:03 INFO Starting thread for data storage
2024-01-28 20:00:03 INFO Starting schedule thread
2024-01-28 20:00:03 INFO Connecting...
2024-01-28 20:00:03 INFO TX: AT+V,0x16
Exception in thread Thread-1:
Traceback (most recent call last):
  File "/usr/lib/python3.11/threading.py", line 1038, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.11/threading.py", line 975, in run
    self._target(*self._args, **self._kwargs)
  File "/home/cassandra/.local/lib/python3.11/site-packages/click/core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/cassandra/.local/lib/python3.11/site-packages/click/core.py", line 1055, in main
    rv = self.invoke(ctx)
         ^^^^^^^^^^^^^^^^
  File "/home/cassandra/.local/lib/python3.11/site-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/cassandra/.local/lib/python3.11/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/cassandra/CaSSAndRA/CaSSAndRA/app.py", line 132, in start
    app = dash.Dash(
          ^^^^^^^^^^
  File "/home/cassandra/.local/lib/python3.11/site-packages/dash/dash.py", line 533, in __init__
    self.init_app()
  File "/home/cassandra/.local/lib/python3.11/site-packages/dash/dash.py", line 611, in init_app
    self.enable_pages()
  File "/home/cassandra/.local/lib/python3.11/site-packages/dash/dash.py", line 2082, in enable_pages
    _import_layouts_from_pages(self.config.pages_folder)
  File "/home/cassandra/.local/lib/python3.11/site-packages/dash/_pages.py", line 435, in _import_layouts_from_pages
    spec.loader.exec_module(page_module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/home/cassandra/CaSSAndRA/CaSSAndRA/src/pages/state.py", line 9, in <module>
    from src.components.state import map, buttongroupcontrol, state, modal, charts, stats
  File "/home/cassandra/CaSSAndRA/CaSSAndRA/src/components/state/charts.py", line 15, in <module>
    max_date_allowed=roverdata.state.iloc[-1]['timestamp'],
                     ~~~~~~~~~~~~~~~~~~~~^^^^
  File "/home/cassandra/.local/lib/python3.11/site-packages/pandas/core/indexing.py", line 1103, in __getitem__
    return self._getitem_axis(maybe_callable, axis=axis)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/cassandra/.local/lib/python3.11/site-packages/pandas/core/indexing.py", line 1656, in _getitem_axis
    self._validate_integer(key, axis)
  File "/home/cassandra/.local/lib/python3.11/site-packages/pandas/core/indexing.py", line 1589, in _validate_integer
    raise IndexError("single positional indexer is out-of-bounds")
IndexError: single positional indexer is out-of-bounds

Cassandra startet auch nicht richtig durch, das Dashboard ist nicht erreichbar. Hast du eine Idee, was das Problem sein könnte? Danke.
 
Hm… interessant, Cassandra ist der Meinung, dass die State DataFrame leer ist, dürfte eigentlich nicht sein, da ein default DataFrame beim Fehlen angelegt wird.

Du hast mehr als ein Versuch gehabt zu Starten?

Hast du als Service gestartet oder direkt im Terminal?
 
Danke für die schnelle Reaktion. Ich habe es mehrfach probiert. Immer der gleiche Fehler. Ich habe zum testen zunächst den Start im Terminal probiert. Ich habe festgestellt, dass es wohl ggf .am data directory liegt, welches ich gemountet habe (Zugriffe sind getestet und vollständig vorhanden). Dieses gemountete Verzeichnis enthält die Daten aus der "alten" Installation. Dort "funktionieren" die Daten auch noch. Versionsstand von Cassandra ist der gleiche.
 
Zuletzt bearbeitet:
Ich habe es offenbar gelöst. Offenbar muss man die Daten erst an eine andere Stelle kopieren. Obwohl der alte Cassandra Dienst abgeschaltet war, gab es offenbar einen Konflikt. Legt man dieselben Daten an eine andere Stelle und mountet das Verzeichnis, klappt es. Der Grund dafür ist mir nicht klar und es ist auch nicht logisch. Ich bin aber zu eingespannt um danach lange zu suchen.
 
Ich habe es offenbar gelöst. Offenbar muss man die Daten erst an eine andere Stelle kopieren. Obwohl der alte Cassandra Dienst abgeschaltet war, gab es offenbar einen Konflikt. Legt man dieselben Daten an eine andere Stelle und mountet das Verzeichnis, klappt es. Der Grund dafür ist mir nicht klar und es ist auch nicht logisch. Ich bin aber zu eingespannt um danach lange zu suchen.
Sehr gut, passt für mich auch! Würde da auch nicht zu viel Zeit investieren.
 
Ich muss hier nochmal einen Schritt zurück gehen.

Es scheint so zu sein, dass es an den Daten liegt. Es lief, solange auch der cassandra Dienst lief. Bei meinem Test oben hatte ich offenbar einen alten Datensatz, der funktionierte. Nehme ich den neuen, kommt der genannte Fehler. Kann es an korrupten Daten liegen?
 
Es liegt an den Daten. Ich habe ein älteres Backup aus November probiert, das aber die gleichen Daten enthält (ich habe seit November nichts an Cassandra angefasst).

Irgendwas hat Ende November/Anfang Dezember die Daten kaputt gemacht. Dabei habe ich tatsächlich nichts damit gemacht. Der Rover steht in der Garage, ist aus, Cassandra lief weiter. Die Frage ist, was hat die Daten kaputt gemacht?

Kann ich dir den kaputten data Ordner irgendwie zukommen lassen?



Was ganz anderes. Diese Warnung beim Start kennst du schon, nehme ich an?

Code:
/usr/src/cassandra/app.py:170: DeprecationWarning: setDaemon() is deprecated, set the daemon attribute instead

  dash_thread.setDaemon(True)
 
Fehler gefunden. Deine Daten sind leer. Das heißt es ist eine Tabelle angelegt, aber diese ist durch alltägliche Routine (00:00) von den alten Daten bereinigt. Das heißt, wenn keine neuen Daten dazu kommen ist irgendwann mal alles leer und es bleibt nur ein Frame stehen. Das magt Cassandra beim neuestart nicht, die liest den Frame ein und prüft nicht, ob dieser leer ist oder nicht. Im Prinzip, wenn du auf dem neuen System ohne alten Daten startest hast du keine Daten verloren, da es sowieso leer ist.

Danke für den Hinweis, ich schaue mal wie ich das Verhalten abstellen kann
 
Welche Daten sind denn leer? Das Log? Es gibt Maps, Tasks etc. in den Daten. Bzw. sollte es die geben.
 
Zuletzt bearbeitet:
Oben