Job-Puffergroesse v. Avanti-W?
Thomas Berger
ThB at gymel.com
Fr Dez 6 07:39:00 CET 2002
Lieber Herr Eger,
> > vermute einmal, dass Sie Ihren Log-Dateien entnehmen
> > koennen, dass die Fehlermeldungen bzgl. fehlender
> > Sprungmarke stets im Kontext der Datenbank "avdemo"
> > mit User "opac" abgelaufen sind.
>
> nein, die stimmten. Interessant ist nur, dass im
> Avanti-Log eben diese "Current database : ..."-Zeile
> exakt 400(hex) Byte nach dem den Job einleitenden "&"
> stand, wenn ein Fehler aufgetreten war.
exakt 1kB also, evtl. trunkiert Ihre avanti-Version
den Jobtext beim Loggen, das muss nichts bedeuten.
Wenn Datenbankname, Benutzer und Passwort stets
stimmen, so ist das ein Zeichen dafuer, dass das
Ende des Jobs vorhanden war, als er ausgefuehrt
wurde, aber vielleicht war er verstuemmelt?
> > Spricht man mit avanti-w, so haengt es sich tatsaechlich
> > auf, bei avantserv (avanti als Systemdienst) und
> > avanti-x auf Solaris kehrt es jedoch zurueck.
>
> Das könnte die Erklärung für die von mir beobachteten Effekte
> sein - mein Client ist ein Multithreaded-Programm, kann
> also an beliebiger Stelle "aufgehalten" werden - und ich weiß
> nicht, ob send() im system-context atomar ist...
Wenn send() nicht thread-safe ist, haben nicht nur Sie
ein Problem. Ansonsten wuerde ich erwarten, dass send()
ein "blocking" Systemaufruf ist, d.h. Sie uebergeben
Daten im Buffer und die werden entsprechend der Blockgroesse
der Verbindung vom System zerteilt und nacheinander
gesendet, sobald gesendet werden kann. Spaetestens wenn
dieser IO-Vorgang blockiert sollte ein Kontextwechsel erfolgen.
Erst "ganz tief unten" sind atomare Vorgaenge, die auf
Treiberebene dafuer sorgen, dass keine unvollstaendigen
Pakete abgeschickt werden...
viele Gruesse
Thomas Berger
Mehr Informationen über die Mailingliste Allegro