Seite 2 von 2

Re: ADS Fehlermeldung 5381

Verfasst: So, 12. Nov 2017 23:45
von DelUser01
Kamaalan hat geschrieben: So, 12. Nov 2017 23:22 Für das Beispiel:
Ohne ADS!
Ohne ADS.INI!
Dadurch auch ohne ADS_ERR.DBF.
OK - also zum Testen ob ein ADS da ist, aber dann ist doch egal welcher Fehler kommt, der Connect hat nicht funktioniert.

Kamaalan hat geschrieben: So, 12. Nov 2017 23:22 Meine Umgebung ist für die ganze Sache eigentlich unwichtig. (lokal W10pro/Server Win7 ,mit ADS9)
Das ist Deine Meinung...

Code: Alles auswählen

ADS.INI 
[SETTINGS]
ADS_SERVER_TYPE=7   (-> OK)
MTIER_LOCAL_CONNECTIONS=1   (-> ???)
PACKET_SIZE=512   (-> warum? einfach Parameter nicht verwenden (Zeile löschen))
USE_TCP_IP=1   (-> unklar)
RETRY_ADS_CONNECTS = 1   (-> OK)
[172.16.1.195]   (-> hier müsste der Host-Name des Servers mit ADS stehen, z.B. ADSSERVER)
LAN_IP=172.16.1.178   (-> dann würde das hier auch Sinn machen, sonst nicht - zwei IPs!?!?!)
LAN_PORT=2000   (-> wenn frei dann OK)
Kamaalan hat geschrieben: So, 12. Nov 2017 23:22Wir möchten eigentlich nur wieder anhand der Fehlermeldungen feststellen, was einen Fehler auslöst ohne raten zu müssen. Ansonsten laufen die Anlagen mit ADS und xbase 2.0 ohne Probleme.
Das hast Du doch inzwischen herausgefunden -. wenn der Fehler 5381 an dieser Stelle kommt (oder irgend ein anderer) dann ist kein ADS da oder zumindest hat der Connect nicht funktioniert.

Was versuchst Du noch herauszufinden...?

Re: ADS Fehlermeldung 5381

Verfasst: So, 12. Nov 2017 23:50
von DelUser01
Meine INI in meinem Netz:

Code: Alles auswählen

[Settings]
ADS_SERVER_TYPE=7
DEFAULT_PROTOCOL=0
MAX_CONNECTIONS=100
RETRY_ADS_CONNECTS=1
RECORD_CACHE_SIZE=10485760
COMPRESSION=Never
MAX_TIMEOUTS=40
USE_TCP_IP
[DRIVES]
J:=\\172.29.59.5\VERWALTUNG
K:=\\172.29.59.5\ADRESSEN
usw... (gekürzt)
[GSSRV3]
LAN_IP=172.29.59.5
LAN_PORT=9889

Re: ADS Fehlermeldung 5381

Verfasst: Mo, 13. Nov 2017 0:03
von Kamaalan
Hallo Carlo,
Du hast mit xbase 2.0 korrekte Fehlernummern via :getLastError() ?? Kannst Du mal bitte mein Beispiel testen, also einen Fehler provozieren!
Was kommt für ein Fehler?
Danke.

Ansonsten noch mal deutlich, wenn ich den ADS in meinem Beispiel starte, dann läuft es ohne Probleme!!! Es geht uns darum die richtigen Fehlermeldungen zu bekommen. (Unsere Hotline muss immer das Rätseln anfangen, wenn ein Kunde einen 5381 Fehler meldet)
Gruß Matthias

Re: ADS Fehlermeldung 5381

Verfasst: Mo, 13. Nov 2017 0:22
von DelUser01
Matthias,

mach Doch einen Code für einen Fehler der von ADS kommen müsste.
Aus dem laufenden System und nicht am Anfang ganz ohne ADS.
Vielleicht bekomme ich im Normalfall keine Fehler vom ADS - es läuft alles sauber.

Re: ADS Fehlermeldung 5381

Verfasst: Mo, 13. Nov 2017 0:41
von Kamaalan
Ich verstehe nicht so ganz, was Du meinst. Wir haben sehr viele Anwender, die mit unseren Programmen arbeiten. Viele davon mit ADS. Da passieren Fehler. Mal ist der ADS down, mal ist eine Firewall da, die blockiert, mal passt eine ADS.ini nicht mehr. Mal ist eine Tabelle defekt usw.
Unter 1.9 hat der ADS eine aussagekräftige Fehlernummer geliefert. Unter 2.0 kommt nur noch 5381. (Mein Beispiel war nur die einfachste Version einen Fehler zu provozieren).
Was soll ich jetzt für einen Code in die Fehlerbehandlung einfügen?
Gruß Matthias

Re: ADS Fehlermeldung 5381

Verfasst: Mo, 13. Nov 2017 1:09
von DelUser01
ich geb's auf...

Re: ADS Fehlermeldung 5381

Verfasst: Mo, 13. Nov 2017 1:59
von AUGE_OHR
hi,
Kamaalan hat geschrieben: So, 12. Nov 2017 19:55Der Fehler ist inzwischen bei Alaska als PDR aufgenommen.
Aber hast Du das Beispiel mal kurz getestet?
wenn Alaska die PDR 6959 angelegt hat ist der Fall doch klar das es "so" mit der v2.x nicht geht.
jetzt kannst du nur noch warten bis Alaska reagiert und das nächste Update raus bringt.

p.s. schon mal mit UNC-Path statt Laufwerksbuchstaben versucht ?

Re: ADS Fehlermeldung 5381

Verfasst: Mo, 13. Nov 2017 6:48
von ramses
Matthias,

Dein Beispiel, ein Connect auf ein Laufwerk auf welchem KEIN ADS läuft ergibt auch bei mir die Fehlernummer 5381 wie du diese beschreibst.

Du kannst versuchen mit DLL Aufrufen der ACE32.DLL an die korrekte Fehlernummer zu kommen oder auf Alaska warten oder auch mal grundsätzlich über einen Umstieg auf PostgreSQL nachzudenken. Die Sorgen um ADS werden sich häufen ...


Gruss Carlo

Re: ADS Fehlermeldung 5381

Verfasst: Mo, 13. Nov 2017 9:22
von nightcrawler
Warum der "ADS-Experte" noch nicht geantwortet hat, liegt nicht am falschen Forum;)
Ich kenne diese Fehlermeldung nicht. 5xxx sind immer Client-seitige Fehler. Ich habe jetzt mal in den ADS-Delphi-Quellen gesucht, ob es dort diesen Fehler evtl undokumentiert gibt. Aber auch das ist nicht der Fall. Von ADS dokumentiert sind Fehler im Bereich 50xx, 51xx, 52xx und 54xx. Zu 53xx gibt es nichts.

Re: ADS Fehlermeldung 5381

Verfasst: Fr, 05. Jan 2018 21:43
von ramses
Hallo

jetzt hat es auch mich erwischt mit dem Fehler 5381.
Nach einem Programmupdate, Programm neu mit 2.0.875 erstellt tritt der Fehler in einem bestimmten Netzwerk nun auch sproadisch bei dbskip(), dbclosearea(), lastrec() und dbunlock() auf.

Dazu auch noch: (Nicht gleichzeitig)
======================================================================
FATAL ERROR LOG
Not recoverable Error!
SYS Thread-ID: 1220
Module: EH
Error Codes: EH: 900 Sub: 0(0) OS: 0 XPP: 0
Call Stack of Thread 1 (1220):
Call Stack of GUI Thread (1384):
File: C:\Program Files (x86)\kis32\kis000.exe
TimeStamp: 20180105 09:21
End of FATAL ERROR LOG.



Gruss Carlo

Re: ADS Fehlermeldung 5381

Verfasst: Fr, 05. Jan 2018 22:42
von Kamaalan
Hallo,
mit

Code: Alles auswählen

Function ADSLastErrorString
	Local cError := "0000 No Error"
	Local cTemp1 := Space(100)
	Local cTemp2 := 100
	Local f

	DLLCall("ACE32.DLL",DLL_STDCALL,"AdsGetLastError",@cTemp1)
	f = bin2i(cTemp1)
	if f != 0
		cTemp1 := Space(100)
		DLLCall("ACE32.DLL",DLL_STDCALL,"AdsGetErrorString",f,@cTemp1,@cTemp2)
		cError := Strzero(f,4,0)+" "+Alltrim(ctemp1)
	Endif
Return cError
bekommst Du den richtigen Fehlercode/text.
Gruß Matthias

Re: ADS Fehlermeldung 5381

Verfasst: Sa, 06. Jan 2018 9:18
von ramses
Hallo Matthias

Danke für den Tip.
Ich habe "AdsGetLastError" bereits im Errorhandler drin. Die Rückgabe ist aber jeweils 0.

Gruss Carlo

Re: ADS Fehlermeldung 5381

Verfasst: Sa, 06. Jan 2018 11:35
von Kamaalan
Hallo,
das ist merkwürdig. Wenn bei uns ein 5381 via o:GetLastError() kommt, liefert "AdsGetLastError" die immer korrekte Nummer.
Hast Du den Text der XPPFATAL.LOG gekürzt? Es fällt auf, dass kein Callstack da ist. Das haben wir eigentlich nur, wenn das
Programm überhaupt nicht startet und nicht bei DB-Operationen.
Gruß Matthias

Re: ADS Fehlermeldung 5381

Verfasst: Sa, 06. Jan 2018 13:00
von ramses
Hallo Matthias

Nein, die Fatal-Log habe ich nicht gekürzt.

Ich verwende nicht ganz die selbe Abfragefunktion meine sieht so aus:

Code: Alles auswählen

static function ADSLastErrorString()
    local cDWError := space(2)
    local nLen := 400
    local cBuffer := space(nLen)
    local nError := 0

    DLLCall("ACE32.DLL",DLL_STDCALL,"AdsGetLastError", @cDWError, @cBuffer, @nLen)
    nError := bin2i(cDWError)

    if nError = 0
        cBuffer := "0000: No Error found."
    else
        cBuffer := strzero(nError,4,0)+": "+alltrim( charrepl(chr(0),cBuffer," ") )
    endif

return( cBuffer )
Auf diese Weise abgefragt ist am Ende der Meldung noch die Funktion angefügt die den Fehler ausgelöst hat und nicht nur der eigentliche Fehlermeldungstext.

Ich lasse mein Fehlermodul wenn möglich bei jedem Fehler den Befehl Wiederholen wenn Sie nicht aus dem Subsystem "DBFNTXAX" kommen, das hat viele Probleme durch Virenscanner beseitigt, evtl. ist das die Ursache dass ich keine Meldung bekomme. Ich bin jetzt am Testen.


Gruss Carlo

Re: ADS Fehlermeldung 5381

Verfasst: So, 07. Jan 2018 19:44
von ramses
Hallo Matthias

ich verzichte nun auf erneute Befehlsausführung im Fehlerhandler und bekomme nun mit obigem Code die korrekte Fehlermeldung.

Auch das Problem habe ich gefunden. Gleichzeitig mit meinem Programmupdate wurde auch der Switch im Netzwerk gewechselt. Dieser hat bei UDP einige Paketverluste pro Stunde. Nachdem ich ADS durch einsetzten von "USE_TCP_IP=1" in die ADS.INI von UDP auf IP gezwungen habe sind die Probleme nicht mehr aufgetaucht. Ursache waren die Packetverluste bei UDP Kommunikation.

Das ganze hat also keinen Zusammenhang mit xbase 2.0.875 welches ich gleichzeitig ausgerollt habe.

Gruss Carlo