mfinsterbusch
New Responder

ERROR: session closed

Hallo Zusammen,

wir haben innerhalb eines schedules lediglich einen Task, welcher aus einem Modul eine executeable aufruft, alá:

#! executable-class

net...firstspirit...myClass.myExecutable

Auf einem DEV-System funktioniert das auch prima, jedoch bekommen wir auf einer PROD einen Fehler (inkl. Vorangestellter logausabe):

INFO 16.10.2014 01:47:03 {pID=85982} (de.espirit.firstspirit.server.scheduler.ScheduleManagerImpl): finished schedule entry 'mySchedule' (id=97542) - 0 fatal error(s), 1 error(s), 0 warning(s), duration 0:00:00.011

INFO 16.10.2014 01:47:03 {pID=85982} (de.espirit.firstspirit.server.sessionmanagement.SessionManagerImpl): close dummy session (ID=4741264905221997688, user=ScheduleEntry 'mySchedule' (id=97542), project 85982)

INFO 16.10.2014 01:47:03 {pID=85982} (de.espirit.firstspirit.server.sessionmanagement.SessionManagerImpl): Session terminated (ID=436059084532775883, user=SYSTEM(dummy)), number of sessions now 9

INFO 16.10.2014 01:47:03 {pID=85982} (de.espirit.firstspirit.server.scheduler.ScheduleManagerImpl): finished task 'script' - schedule entry 'mySchedule' (id=97542)

INFO 16.10.2014 01:47:03 {pID=85982} (de.espirit.firstspirit.server.sessionmanagement.SessionManagerImpl): close dummy session (ID=6208419734243412313, user=Admin)

INFO 16.10.2014 01:47:03 {pID=85982} (de.espirit.firstspirit.server.sessionmanagement.SessionManagerImpl): Session terminated (ID=5396967500525507428, user=Admin(dummy)), number of sessions now 11

ERROR  16.10.2014 01:47:03 {pID=85982} (net...firstspirit...myClass.myExecutable): myExecutable failed

FSVersion=5.0.425.60000#3215;JDK=1.7.0_15 64bit Oracle Corporation;OS=Linux 2.6.18-371.9.1.el5 amd64;Date=16.10.2014 01:47:03

de.espirit.firstspirit.access.schedule.CancelSchedule: connection is closed

...

Der Tipp des Helpdesk ist wohl, dass die executeable die Session nutzen will, diese aber terminiert wird.

Das sollte eigtl. nicht sein, da wir die session des scriptContexts nutzen.

Weiterer Tipp ist:

"[..] Wenn ja, dann müsst ihr entweder in dem Skript auf Rückmeldung warten, dass der Sync abgeschlossen ist und erst dann die Aktion beenden [..]"

Klingt gut,... aber wie?

Danke & Grüße,

maik

0 Kudos
8 Replies
kohlbrecher
Crownpeak employee

Hallo Maik,

sind denn die FS Versionen gleich? Sind die Einstellungen gleich (alle Rechte Haken gesetzt etc.) ?

Grüße

Jan

0 Kudos

Hi Jan,

die FirstSpirit Versionen sind identisch,

auch die Konfigurationen des schedules / tasks ist gleich...

cheers & danke,

maik

0 Kudos

Hallo Maik,

ich meinte den "Alle Rechte" Haken am Modul. Da es auf dem DEV-System läuft, vermute ich, dass da irgendwo noch ein Unterschied ist.

Grüße

Jan

0 Kudos

Hi Jan,

auch diese Konfiguration war gleich...

Was nun aber Analysen neu ergeben haben:

die class "net...firstspirit...myClass.myExecutable" ruft eine SOAP Schnittstelle auf, welche auf PROD nicht erreichbar ist.

Jedoch würde ich erwarten, dass der schedule auf die Verbindung wartet und dann später den "connection timeout" aus der wsdl-Anfrage liefert...

So wird suggeriert, dass die Session abbricht und man weiß nicht wieso...

Nur eine Vermutung, kann man diesen Prozess irgendwie synchron halten? Kann man das bestätigen?

So erscheint auf der console ja nur "The schedule will now be executed on the server"- und man bekommt nie den Dialog, "the schedule has finished, but contains errors..."

cheers,

maik

0 Kudos

Hallo Maik,

das Verhalten hängt komplett von eurer Implementierung ab.

In den meisten Projekten ist ein Webservice-Call ja synchron. Damit wartet das Skript/Executable bis etwas zurückkommt. Optimalerweise habt ihr entsprechende Timeouts etc. gesetzt und brecht den Call geeignet ab. Das kann man dann mit FirstSpirit-Logging entsprechend als Warning/Fehler/Fatal loggen und in nachfolgenden Skripten entsprechend drauf reagieren. Zum Beispiel keine weiteren Tasks mehr aufführen und den Auftrag als fehlerhaft markieren. Vielleicht will man auch eine Mail an irgendjemanden schicken.

Viele Grüße

Christoph

0 Kudos

Hi Christoph,

Dank auch Dir.

"das Verhalten hängt komplett von eurer Implementierung ab."

Willst Du damit sagen, dass ich das Verhalten von FirstSpirit in meiner Java-Executeable steuern kann?

Gibt es dafür eine Schnittstelle (mit Doku + evtl. Example im MDEV_examples- gefunden hatte ich leider nichts direkt dazu...)?

Danke & Grüße,

maik

0 Kudos

Mit eurer Implementierung meine ich Java-Code den ihr in der Executable aufruft. Beim Aufruf der SOAP-Schnittstelle seid ihr für entsprechende Timeouts/Fehlerbehandlung etc. zuständig. Ihr bestimmt ob der Aufruf synchron oder asychron ist.

Wenn du konkretere Hilfe brauchst, müsstest du mal euren Sourcecode und auch den kompletten Stacktrace posten.

0 Kudos

Hallo Maik,

benötigst du noch weitere Hilfe oder haben dir die bisherigen Antworten bereits geholfen?

In diesem Fall wäre es super, wenn du die "richtige Antwort" entsprechend markierst. Andernfalls würde ich dich bitten, einmal den von Christoph gewünschten Sourcecode und Stacktrace zu posten.

Solltest du eine eigene Lösung gefunden haben, wäre es nett, wenn du diese hier bereitstellst.

Viele Grüße

Michaela

0 Kudos