V3.030 löscht anscheinend prozess nicht immer beim beenden

Bugreports, Fragen und Hilfestellungen zu brandneuen Testversionen
Derzeit keine Betaversion im Test
Antworten
ASausL
Beiträge: 37
Registriert: 28.10.2004, 00:10
Wohnort: Leipzig

V3.030 löscht anscheinend prozess nicht immer beim beenden

Beitrag von ASausL »

hallo,

ich hatte ja schon im thread:
http://www.baywotch.de/phpbb/viewtopic.php?t=1256
geschrieben, dass wenn v3.0.30 direkt hintereinander gestartet wird, die fehlermeldung "baywotch bereits gestartet" kommt.

mittlerweile habe ich zwischen 2 aufrufen genau 99 sekunden wartezeit gelegt mittels dem timout befehl aus dem windows resource kit.

der fehler ist jetzt wieder aufgetreten.
damit tritt er ca. aller 100 bw-starts auf.

grüsse

axel
denkmann
Administrator
Beiträge: 5370
Registriert: 31.12.2003, 00:14
Wohnort: Stolberg (Rhld.) bei Aachen
Kontaktdaten:

Re: V3.030 löscht anscheinend prozess nicht immer beim beend

Beitrag von denkmann »

Hallo Axel,
ASausL hat geschrieben:ich hatte ja schon im thread:
http://www.baywotch.de/phpbb/viewtopic.php?t=1256
geschrieben, dass wenn v3.0.30 direkt hintereinander gestartet wird, die fehlermeldung "baywotch bereits gestartet" kommt.

mittlerweile habe ich zwischen 2 aufrufen genau 99 sekunden wartezeit gelegt mittels dem timout befehl aus dem windows resource kit.

der fehler ist jetzt wieder aufgetreten.
damit tritt er ca. aller 100 bw-starts auf.
das Problem ist wohl weniger, daß die neue BayWotch Instanz nicht startet, sondern daß die alte nicht beendet wird. Die Frage ist also: Warum wird BayWotch nicht beendet bzw. dauert es einfach nur was länger... und wie lange dauert es und warum dauert es so lange?

Es könnte natürlich sein, daß BayWotch beim Beenden etwas länger braucht, wenn vorher viel Speicher für bestimmte Transaktionen reserviert werden mußte, vor allem dann, wenn eine laufende Übertragung aufgrund eines Fehlers abgebrochen werden muß. Allerdings kann ich mir nicht vorstellen, daß das Beenden dann mehr als 1,5 Minuten dauert.

Eine direkte Antwort habe ich auf die o.g. Fragen leider nicht. Wie könnte Dir BayWotch da entgegen kommen?

Eine Möglichkeit wäre, ein Mini-Logfile zu schreiben, wenn BayWotch beim Starten auf sein Ebenbild trifft und wieder beendet wird. Diese kleine Textdatei würde dann kurz den entsprechenden Hinweis mit Datum und Uhrzeit enthalten. Deine Batch könnte auf die Datei prüfen. Liegt die Datei beim nächsten Prozess nach BayWotch-Start vor, so wurde BayWotch nicht korrekt gestartet und es muß erneut versucht werden (vorher natürlich Datei löschen). Startet BayWotch korrekt, so wird automatisch ein eventuell älteres Logfile gelöscht. Somit ist sichergestellt, daß das Log wirklich nur dann vorliegt, wenn der letzte Versuch gescheitert ist.

Wäre das eine Lösung?

Vielleicht kannst Du mit Hilfe dieser Vorgehensweise auch besser analysieren, was bei der "lang endenden" BayWotch Instanz genau abläuft.
Gruß,
Elmar Denkmann
(Entwickler)
ASausL
Beiträge: 37
Registriert: 28.10.2004, 00:10
Wohnort: Leipzig

Beitrag von ASausL »

hallo,

erstmal vielen dank für die erweiterung der runtime.txt.
das ist ganz super!

das Problem ist wohl weniger, daß die neue BayWotch Instanz nicht startet, sondern daß die alte nicht beendet wird. Die Frage ist also: Warum wird BayWotch nicht beendet bzw. dauert es einfach nur was länger... und wie lange dauert es und warum dauert es so lange?

Es könnte natürlich sein, daß BayWotch beim Beenden etwas länger braucht, wenn vorher viel Speicher für bestimmte Transaktionen reserviert werden mußte, vor allem dann, wenn eine laufende Übertragung aufgrund eines Fehlers abgebrochen werden muß. Allerdings kann ich mir nicht vorstellen, daß das Beenden dann mehr als 1,5 Minuten dauert.
eigentlich ist es doch egal, wie lange baywotch zum beenden braucht.
das batch startet die instanz baywotch.exe. die bekommt eine prozess-id.
am ende wird die pid gelöscht und das batch bekommt die rückmeldung davon. wenn baywotch also noch läuft, hat es auch noch seine pid und das batch mach solange nicht weiter. ... allerdings kann es auch sein, dass baywotch als "versteckter" prozess noch weiterläuft z.b. weil es noch daten in der speicherauslagerungsdatei von windows gibt, die zu baywotch gehören.

ich habe mir überlegt, nach den 99 sekunden wartezeit vorsorglich den baywotch prozess mittels kill /F baywotch.exe zu beenden. damit würde das batch weiterlaufen können. allerdings ist nicht ganz klar, welche ausiwrkungen das auf eine evtl. doch noch geöffnete db hat....lauf ich hier gefahr, eine db zu beschädigen?




Eine Möglichkeit wäre, ein Mini-Logfile zu schreiben, wenn BayWotch beim Starten auf sein Ebenbild trifft und wieder beendet wird.
...genau das ist ja das problem. trifft bw beim start auf sein ebenbild, kommt dieses hinweisfenster, das über OK geschlossen werden muss.
es ist dort also von bw zur zeit ein manueller eingriff vorgesehen.
(der macht auch sinn für alle benutzer, die bw normal per hand starten.)

Wäre das eine Lösung?
ja, klingt sehr gut, wenn ich es richtig verstanden habe.
du müsstest dann allerdings das fehlerfenster der zweiten bw-instanz, dass das logfile schreibt, mit einem countdown schließen lassen ...nach 60 sekunden oder so. sonst geht das batch nicht weiter.


ich hab mir auch nochmal die db angesehen, nach denen bw nicht korrekt beendet wurde. eine hatte 450mb mit 22000 datensätzen. dort sind pro tag etwa 3000 datensätze abzugleichen.
die andere ist sehr klein mit ca. 2000 datensätzen, wo nur immer so 100 neue dazukommen. es liegt also scheinbar nicht an der speicherauslastung oder datenbankgröße.


viele grüsse


axel
denkmann
Administrator
Beiträge: 5370
Registriert: 31.12.2003, 00:14
Wohnort: Stolberg (Rhld.) bei Aachen
Kontaktdaten:

Beitrag von denkmann »

Hi Axel,
ASausL hat geschrieben:...genau das ist ja das problem. trifft bw beim start auf sein ebenbild, kommt dieses hinweisfenster, das über OK geschlossen werden muss.
es ist dort also von bw zur zeit ein manueller eingriff vorgesehen.
(der macht auch sinn für alle benutzer, die bw normal per hand starten.)
ok, dann wird sich das nächste Update wie folgt verhalten:

1.
Die Meldung "BayWotch ist bereits gestartet" wird nach 60 Sek. automatisch geschlossen.

2.
Ist BayWotch bereits gestartet, wird eine Datei namens bwruns.txt im BayWotch Programmverzeichnis geschrieben, welche Datum und die Meldung nochmals enthält.

3.
Wird BayWotch korrekt gestartet, wird eine evtl. vorliegende bwruns.txt gelöscht.
Gruß,
Elmar Denkmann
(Entwickler)
ASausL
Beiträge: 37
Registriert: 28.10.2004, 00:10
Wohnort: Leipzig

Beitrag von ASausL »

hallo elmar
3.
Wird BayWotch korrekt gestartet, wird eine evtl. vorliegende bwruns.txt gelöscht.
...dass ist OK, solange baywotch selber keine aktivitäten abhängig von bwruns.txt unternimmt, also wirklich nur das logfile löscht.


1)
das batch testet auf bwruns.txt

2.1)
bwruns.txt nicht vorhanden : das batch startet baywotch ganz normal.

2.2)
bwruns.txt vorhanden : bwruns.txt wird vom batch gelöscht

3)
dann eine zeit warten

4)
dann baywotch wieder starten.

5)
ist die alte baywotch instanz dann immer noch aktiv, würde wieder eine bwruns.txt geschrieben werden.


6)
und die schleife geht wieder zu punkt 1)



viele grüße und danke für deine hilfe


axel
Mischa
Beiträge: 801
Registriert: 04.01.2004, 07:28
Wohnort: Köln

Beitrag von Mischa »

das mit der datei während des startes ist für mich etwas undurchsichtig ... und nicht sehr konsequent :-( ... wichtig wäre ja eine meldung, wenn baywotch NICHT mehr läuft.

andere idee:

baywotch selber kann doch noch auf den eigenen prozess prüfen, sonst würde keine fehlermeldung kommen!?

somit wäre ein tool interessant, welches dann die daten ausgibt.

oder ein schalter bei welcher dann baywotch nicht startet, sondern nur ausgibt, ob baywotch schon läuft.

baywotch /checkrun

oder als ein eigenständiges programm:

bwcheckrun.exe

antworten
0 - baywotch läuft nicht
1 - eine baywotch instanz läuft noch
2 - Baywotch läuft nicht, aber letzte instanz ist mit fehlern abgebrochen.
3 - Baywotch läuft noch, aber letzte instanz ist mit fehlern abgebrochen.

die antwort 2 und 3 könnte dazu dienen, falls man beim auftreten eines fehlers keinen weiteren batchbetrieb mehr möchte. evtl. könnte man noch die letzte fehlernummer ausgeben für den fall, daß man bestimmte fehler ignorieren möchte.
ASausL
Beiträge: 37
Registriert: 28.10.2004, 00:10
Wohnort: Leipzig

Beitrag von ASausL »

hallo mischa,

dein vorschlag ist auf jeden fall die elegantere lösung, alledings wahrscheinlich auch aufwendiger zu programmieren.
mal sehen, was elmar dazu sagt.


bei beiden lösungen müsste ein normales DOS-skript mit der rückmeldung von baywotch umgehen können.


rufst du auch mehrer baywotch durchläufe aus einem skript heraus auf?



grüsse,

axel
Mischa
Beiträge: 801
Registriert: 04.01.2004, 07:28
Wohnort: Köln

Beitrag von Mischa »

ich habe kein script ... ich mache das alles manuell, da mein rechner nicht durchläuft ... ich denke halt nur mit ;-)
denkmann
Administrator
Beiträge: 5370
Registriert: 31.12.2003, 00:14
Wohnort: Stolberg (Rhld.) bei Aachen
Kontaktdaten:

Beitrag von denkmann »

Hi Mischa,
Mischa hat geschrieben:das mit der datei während des startes ist für mich etwas undurchsichtig ... und nicht sehr konsequent :-( ... wichtig wäre ja eine meldung, wenn baywotch NICHT mehr läuft.
naja, schön sind Logfiles nicht unbedingt, aber konsequent ist die Lösung schon, zumindest im Rahmen von BayWotch. BayWotch erzeugt Logfiles, wenn es zu Fehlern kommt. Somit ist das Schreiben der bwruns.txt in meinen Augen durchaus konsequent, und auch nicht sonderlich undurchsichtig.
baywotch /checkrun

oder als ein eigenständiges programm:

bwcheckrun.exe

antworten
0 - baywotch läuft nicht
1 - eine baywotch instanz läuft noch
2 - Baywotch läuft nicht, aber letzte instanz ist mit fehlern abgebrochen.
3 - Baywotch läuft noch, aber letzte instanz ist mit fehlern abgebrochen.
Ja, ein Fehlercode wäre natürlich eleganter; und auch konsequent, wenn BayWotch auch bei anderen Fehlern Fehlercodes ausgeben würde.
Gruß,
Elmar Denkmann
(Entwickler)
Mischa
Beiträge: 801
Registriert: 04.01.2004, 07:28
Wohnort: Köln

Beitrag von Mischa »

ups ... mein fehler ... hatte den abschnitt falsch interpretiert:

http://www.baywotch.de/phpbb/viewtopic.php?t=1275
Stellt BayWotch beim Programmstart fest, daß bereits eine BayWotch Instanz läuft ist, so wird die Hinweismeldung "BayWotch ist bereits gestartet" nach 60. Sek. geschlossen. Außerdem wird eine Textdatei namens bwruns.txt im BayWotch Programmverzeichnis geschrieben, welche bei einem erfolgreichen Programmstart wieder gelöscht wird.
Ich hatte den 2. satz so gelesen, daß "außerdem" immer beim programmstart die datei bwruns.txt geschrieben wird und wenn der start erfolgreich verlaufen ist, daß dann diese datei wieder gelöscht wird.

falsche interpretation meinerseits also :-)
Antworten