HttpClient() und HttpEndpoint()

Vom Front-End bis SOAP.

Moderator: Moderatoren

Antworten
Dominik Krebs
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 197
Registriert: Mo, 15. Apr 2019 16:19
Hat sich bedankt: 10 Mal
Danksagung erhalten: 4 Mal

HttpClient() und HttpEndpoint()

Beitrag von Dominik Krebs »

Hallo zusammen,
es ist leider für mich immer das selbe nervige Thema.
Diese beiden Klassen treiben mich noch in den Wahnsinn.

Nachdem nun mit der neuen Version PDR https://www.alaska-software.com/scripts ... PDRID=7472 gefixt wurde (leider nicht der Fall) habe ich immer noch massive Probleme.

Mein Supportaufwand geht dadurch durch die Decke.

Wer arbeitet noch mit diesen Klassen und kann mir sagen ob er auch Probleme damit hat. Ich kann doch nicht der Einzige sein, der da drüber stolpert...
Gruß Dominik
Benutzeravatar
Frank Grossheinrich
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 142
Registriert: Fr, 31. Mär 2017 15:06
Wohnort: Eschborn
Hat sich bedankt: 5 Mal
Danksagung erhalten: 81 Mal
Kontaktdaten:

Re: HttpClient() und HttpEndpoint()

Beitrag von Frank Grossheinrich »

Hallo Zusammen,

nur zur Info: wir stehen in Kontakt mit Dominik und arbeiten mit ihm zusammen an dem Problem (das wirklich Eines ist ... bis Stand heute)! Aber der angesprochene PDR ist definitiv gefixed. Das Problem von Diminik ist ein Anderes (ebenfalls Stand heute).

Das sage ich explizit, weil man Probleme oft geschildert bekommt, Lösungen bzw. Hilfestellungen leider nicht so oft.

Uns ist das Problem so wichtig, dass wir es hoch priorisieren.

Grüße und FF
Frank
We love Xbase++, and you?
Dominik Krebs
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 197
Registriert: Mo, 15. Apr 2019 16:19
Hat sich bedankt: 10 Mal
Danksagung erhalten: 4 Mal

Re: HttpClient() und HttpEndpoint()

Beitrag von Dominik Krebs »

Hallo Frank,
vielen Dank für deine Antwort.
Ich hoffe ebenfalls das der HTTPClient gefixt ist, bei mir laufen diverse Tests um dies zu bestätigen.

Ich bin auch sehr froh das Ihr euch für dieses Thema so interessiert und bemüht seid es zu lösen.
Etwas anders könnte ich im Moment auch nicht behaupten.

Mich wundert es nur das wohl niemand anders hier ähnliche Probleme hat.
Gruß Dominik
Benutzeravatar
Frank Grossheinrich
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 142
Registriert: Fr, 31. Mär 2017 15:06
Wohnort: Eschborn
Hat sich bedankt: 5 Mal
Danksagung erhalten: 81 Mal
Kontaktdaten:

Re: HttpClient() und HttpEndpoint()

Beitrag von Frank Grossheinrich »

Hallo Dominik,

meine Kollegen vom Support haben mich wissen lassen, dass sie dir eine ausführliche Email zu deinem Problem geschickt haben.
Hast du das erhalten und hilft es? Das scheinen ja alles Probleme in deinem Code zu sein, ist dem so?

Grüße
Frank
We love Xbase++, and you?
Dominik Krebs
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 197
Registriert: Mo, 15. Apr 2019 16:19
Hat sich bedankt: 10 Mal
Danksagung erhalten: 4 Mal

Re: HttpClient() und HttpEndpoint()

Beitrag von Dominik Krebs »

Hallo Frank,
danke für deine Rückmeldung.
Ja ich habe die Email deiner Kollegen erhalten und bin auch sehr dankbar über den ausführlichen Inhalt.

Ich muss noch validieren in wie fern eine Änderung der genannten Punkte Auswirkungen auf die Stabilität meiner Software haben.
Ich denke aber das der ebenfalls in der Mail erwähnte Fehler Fehler im HttpClient() Shutdown einen großen Einfluss hat, da ich viel mit dieser Klasse arbeite.

Sobald ich Ergebnisse habe, werde ich es dich und deine Kollegen wissen lassen.

Aber wenn ich dich schonmal hier habe, ist mit Fehler im HttpClient() Shutdown PDR 7485 gemeint?
Gruß Dominik
Benutzeravatar
Frank Grossheinrich
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 142
Registriert: Fr, 31. Mär 2017 15:06
Wohnort: Eschborn
Hat sich bedankt: 5 Mal
Danksagung erhalten: 81 Mal
Kontaktdaten:

Re: HttpClient() und HttpEndpoint()

Beitrag von Frank Grossheinrich »

Hallo Dominik,

so, ich habe mich noch mal mit meinen Kollegen unterhalten. Und hoffe, dass ich nun etwas mehr Überblick habe.
So, wie ich sie verstanden habe, konnten aktuell 3 Fehlerquellen ausgemacht werden.
Und mit Absicht waren diese nach Gewichtung/Fehlerpotenzial sortiert.

Da wir zunächst von einem Fehler in unserem Produkt ausgegangen sind, haben wir hier echt Zeit rein investiert. An reiner Analysezeit steckt da locker eine Woche exklusive Entwicklerzeit drin. Von den langen Laufzeiten wollen wir gar nicht sprechen.

Nun denn ... ich erkläre mal für alle Mitleser, denn das kommt mit Sicherheit in allerlei Code vor:
1) Da ist zunächst ein Fehler in der Fehlerbehandlung. Die gilt es definitiv zu überarbeiten.
- das Zurücksetzen des ErrorHandlers *direkt* nach RECOVER USING und END SEQUENCE ist evident!!
- der eigene ErrorHandler fängt sogar IDSCs ab; auch wenn die nicht auftreten sollten, sollte man diese nicht "abfangen"
- Fehler in der Fehlerbehandlung führen zur Rekursion
- die Fehlerbehandlung des WebHandlers ist ausgehebelt
- Ausführen von komplexem Code im ErrorHandler (z.B. Senden von Emails) ist nicht empfohlen und wenn es schon sein muss, dann diesen wieder mit eigenen BEGIN SEQUENCE/RECOVER Kontext abzusichern

2) hier habe ich selbst gelernt, denn mir persönlich (hier bin ich ehrlich) war diese Implikation auch nicht sofort klar: Verwendung von dynamisch erzeugten Klassen in hoch-frequent genutzten Multi-Threading Umgebungen. Häh, das versteht man nicht ... z.B. wenn man dynamische Klassen - du hast dir das durch ein Addon reingeholt - verwendet, das in jedem Thread eine Klasse erzeugt, die eine Tabelle repräsentiert. Wenn nun viele Threads die gleiche Tabelle verwenden, dann werden permanent Klassen mit dem gleichen Namen erzeugt und wieder verworfen. Wenn nun die Aufrufe von ClassObject(), ClassCreate() und ClassDestroy() aber nicht serialisiert sind, dann knallt es zwangsläufig. Das MUSS wechselseitig ausgeschlossen werden. Ansonsten führt das zu beliebigem Verhalten. Und wenn es dann knallt - und im Zusammenhang mit dem Problem der Fehlerbehandlung oben - wird die Anwendung irgendwann sterben.

Unserer Ansicht nach ist das sogar eine Verletzung von OOP.
Nicht alles, was möglich ist, ist gut.
Erzeuge die Klasse und ab dann verwende bitte ausschließlich Instanzen der Klasse.

3) wir haben noch eine Lücke im Shutdown/Deinitialisierung von System Callback-Threads entdeckt. Eine vermeintliche Lücke, wo wir uns vorstellen können - wir konnten es leider nicht beweisen; ist eine eher "akademische" Lücke -, dass diese auch zu Problemen geführt hat. Diese wurde mit dem Update heute geschlossen.

Viel wichtiger sind aber die beiden Punkte oben.
Und nein, der PDR 7485 ist damit nicht gemeint. Der ist immer noch offen, dürfte aber für dein Problem noch weit weniger relevant sein.

Für mich ist es wichtig, dass dein Problem *kein* HttpClient() / HttpEndpoint() Probem ist. Zumindest bis zum jetzigen Stand unserer Anaylsen.

Und ich lerne gerne dazu ...
Ich bin gespannt auf deine Rückmeldung und ob die Umstellung etwas bewirkt.

Grüße
Frank
We love Xbase++, and you?
Dominik Krebs
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 197
Registriert: Mo, 15. Apr 2019 16:19
Hat sich bedankt: 10 Mal
Danksagung erhalten: 4 Mal

Re: HttpClient() und HttpEndpoint()

Beitrag von Dominik Krebs »

Hallo Frank,
erst einmal vielen Dank für deine Ausführliche Antwort.

Ich werde meine Software Stück für Stück anpassen und die Ergebnisse kontrollieren.
Den Fehlerhandler habe ich bereits umgestellt, konnte hierbei jedoch keine Besserung festellen.

Ich habe auch bereits Kontakt zum Addon Hersteller aufgenommen, der sich das sehr gerne Anschaut.
Auf die Ergebnisse muss ich allerdings warten.

Ich werde Kontakt zu deinen Kollegen aufnehmen, sobald ich neue Ergebnisse habe.
Gruß Dominik
Benutzeravatar
Frank Grossheinrich
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 142
Registriert: Fr, 31. Mär 2017 15:06
Wohnort: Eschborn
Hat sich bedankt: 5 Mal
Danksagung erhalten: 81 Mal
Kontaktdaten:

Re: HttpClient() und HttpEndpoint()

Beitrag von Frank Grossheinrich »

Hallo Dominik,

ist ja schön, dass du den ErrorHandler bereits umgestellt hast.
Dass das alleine noch nichts bringt, war mir schon klar. Ich erwarte(te) sogar eine Verschlechterung, denn nun werden Fehler nicht mehr einfach weggedrückt, sondern schlagen transparent auf. Somit würde ich erwarten, dass sich die Laufzeit sogar eher verkürzt. Aber die auftretenden Fehler sind ja interessant und die muss man sich anschauen. Denn die geben weitere Hinweise, was denn so alles schief geht.

Dürfte ich dich darum bitten uns den "umgebauten" ErrorHandler zu schicken. Schicke es bitte wieder an meine Kollegen und wir werfen einen Blick darauf. Und mich würden die nun erzeugten LOG Files interessieren. Auch gleich mit an meine Kollegen schicken.

Und dann kommen wir der Sache immer mehr auf die Schliche.
Danke
Frank
We love Xbase++, and you?
Antworten