Warning: Another aggregation is already running

Ich rufe diese Funktion hintereinander mit 2 verschiedenen Variablen:

function addValuesToIps($dataArray, $varID)
{AC_AddLoggedValues (56630, $varID, $dataArray);
AC_ReAggregateVariable (56630, $varID);}

…und bekomme beim zweiten Mal die Warnung: "Warning: Another aggregation is already running "

Wie kann ich das lösen? Kann ich die zwei Prozesse irgendwie hintereinander „pipen“?

Moin,

hier https://www.symcon.de/forum/threads/27343-Pi-Automatische-Reaggregation-aller-geloggten-Variablen?highlight=reaggregation findest du ein Skript mit dem du Variablen reaggregieren kannst.

Alternativ könntest du, wenn es nur 2 Variablen sind einfach einen sleep Befehl einbauen damit die 1. Reaggregation abgeschlossen ist bevor die 2. startet :wink:

Warum hast du dies im englischen Forum veröffentlicht?

Gruß
Hans

Ich habe es mal verschoben.
Ein sleep wird aber nicht helfen, da das Reaggregieren einer Variable im allerersten Durchlaufen gestartet wurde und dann beendet sich das Script.
Egal ob das Archiv fertig ist, oder nicht.

Michael

ich habe 1 Sekunde sleep eingeführt, und das hat das Problem vorerst gelöst. Es gefällt mir aber nicht, es ist ein sehr grobes Hack. Eine Art Semaphor wäre mir lieber…

Hat da jemand Semaphore gesagt? IPS_SemaphoreEnter — IP-Symcon :: Automatisierungssoftware

Fehlt nur ein Trigger wenn das Archiv fertig ist um sie zu löschen :smiley:
Michael

Hallo,

ich bin aktuell auch über das Problem „Another aggregation is already running“ gestolpert.
Ich habe einen Anwendungsfall, bei dem ich regelmäßig neue Werte zum Archiv mehrerer Variablen hinzufügen und diese dementsprechend neue aggregieren muss.

Also ehrlich gesagt würde ich erwarten, dass IPS das intern regelt und sicherstellt, dass wenn bereits eine Aggregation läuft, die nächste durchgeführt wird, wenn die vorherige abgeschlossen ist.
Es kann doch nicht sein, dass ich im Zweifelsfall wer weiß wie lange probiereren muss, bis es klappt. So eine Reaggregation kann ja in einer Sekunde durch sein, sie kann aber auch 5 Minuten laufen. Warum kann man da kein Queuing implementieren, wenn Reaggregationen zwingend sequenziell abgearbeitet werden müssen?

Ich verstehe aber auch nicht, warum man nicht mehrere Variablen parallel reaggregieren kann. Gibt es da irgendwelche internen Abhängigkeiten? Wenn man es bei der selben Variable zweimal versuchen würde, würde ich es ja als konkurrierenden Zugriff ansehen und verstehen, aber bei unterschiedlichen Variablen… Aber ich weiß natürlich nicht, wie das Archiv intern arbeitet.

Gruß
Slummi

Dein Use-Case wird einfach nicht offiziell unterstützt. Unser Use-Case ist fortlaufend Daten zu loggen und die AddLoggedValues Funktion ist nur für seltenes Hinzufügen von Daten gedacht. Auch die Reaggregation ist nicht dafür gedacht ständig aktiviert zu werden. Deshalb gibt es auch keinerlei Logik, dass diese Parallel ausgeführt wird (weil wir dies nicht brauchen ;))

paresy

Haha, das ist natürlich die perfekte Begründung für alles. Geht nicht, weil wir es nicht brauchen. :smiley:
Den muss ich mir mal für die Arbeit merken. :wink:

Ich finde es eigentlich auch blöd, dass ich darauf zurückgreifen muss, aber in dem Fall geht es nicht anders.
Die externe Datenquelle liegt nicht unter meiner Kontrolle und sie versorgt mich leider nur in größeren Intervallen mit neuen Werten und liefert in unregelmäßigen Abständen die alten Daten mit hoher Genauigkeit nach. Dann muss ich es halt weiter durch ständige Wiederholungen versuchen. Solange das Archiv noch klein ist, geht es ja…

Da fällt mir gerade noch eine andere Frage zum Archiv ein, wo wir gerade bei dem Thema „Brauchen wir nicht“ :wink: sind.
Man kann in IPS ja theoretisch mehrere Archiv-Instanzen erstellen. Braucht man das für irgendwas?

Ich hatte z.B. daran gedacht, dass man vielleicht die Archiv-Daten bestimmter Variablen je Archiv gruppieren kann (der Übersichtlichkeit halber). Aber wenn man mehrere Instanzen erstellt, hat man dort einfach erneut alle Variablen gelistet.
Oder könnte man das dazu missbrauchen, um die Reaggregation parallel über unterschiedliche Archiv Controls laufen zu lassen? Ich habe aber auch wieder tolle Ideen, merke ich gerade. :smiley:

Nein. Das macht auch nur Ärger :smiley: Das sollten wir zeitnah auch mal unterbinden :rolleyes:

paresy

Moin paresy,

so ganz mag ich dem nicht zustimmen :slight_smile: Es ist sicherlich so, dass im Rahmen eurer Betrachtungen dies eine untergeordnete Bedeutung hat. Da ich mein Entwicklungs- und Produktivsystem vollständig getrennt habe und somit immer alle Dateien inkl. IPSStudio ohne das db-Verzeichnis vom Entwicklungs- auf das Produktivsystem kopiere bin ich gezwungen, danach die Reaggregation aller Variablen durchzuführen. Um die Probleme mit dem Timing zu umgehen habe ich das oben genannte Skript auf meine Verhältnisse angepasst :wink: Auf diese Weise hat man zumindest ein Lösung.

@Slummi Ich kann mir vorstellen, dass aufgrund des verstärkten Einsatzes von RPis eine parallele Ausführung sicherlich problematisch sein könnte.

Gruß
Hans

Es ist jedoch eher die Ausnahme und die Anwendungsfälle dafür sind schon sehr speziell. Ich wollte eigentlich nur sagen: Wir haben dies nicht umgesetzt, da die Nachfrage danach zu gering war und der Aufwand dafür nicht zu unterschätzen ist :slight_smile:

AddLoggedValues könnte ja auch automatisch nur die relevanten Teile automatisch reaggregieren. Optimieren kann man da einiges :slight_smile: Aber dann sind wir wieder bei… Das brauchen nicht so viele :wink:

paresy

Gute Nachrichten: Ab IP-Symcon 5.5 kann man mehrere Aggregationen parallel durchführen :slight_smile: Auch die Konsole wird dies für euch automatisch skalieren, sodass mehr eurer CPU-Kerne ausgelastet werden. :loveips:

paresy

Verrückt! Und das, wo das doch niemand braucht… :stuck_out_tongue:

Nee mal Spaß bei Seite. Finde ich gut! :loveips:
Vielleicht wollt ihr ja auch noch das Thema mit den Mehrfachinstanzen fürs Archiv angehen, wenn ihr ohnehin am Umbauen des Archivs seid.
Entweder ganz unterbinden oder zum Zwecke der besseren Organisation (z.B. ein Archiv für Wetterdaten, ein Archiv für Energiedaten etc.) gezielt ermöglichen.

Gruß
Slummi

Hallo
Dazu mal eine Frage.
Kann ich dann in einem Script mehrere
AC_REAGGREGATEVARIABLE Functionen
hintereinander aufrufen und die laufen parallel?
Wenn das so funktioniert bekomme ich ja keinen Rueckgabewert der Funktionen
weil die ja nicht warten.

Ich glaube bisher hat die Funktion nie einen Rückgabewert gegeben, sonder nur die asynchron laufende Reaggregation gestartet.

paresy

Hallo
Naja laut Doku gibt es einen Rueckgabewert.
Vielleicht heisst das auch nur erfolgreich gestartet?

Genau. Das Starten kann fehlschlagen, wenn es bereits läuft.

paresy

Hallo
Kann das jetzt nicht mehr passieren, bei parallel, oder nur
wenn die selbe Variable schon dabei ist?

Genau. Es kann immer noch passieren wenn du zwei mal die selbe Variable gleichzeitig reaggregieren wollen würdest.

paresy