A new version of HelpSystem-Core was added to project The Inbox:
http://source.squeak.org/inbox/HelpSystem-Core-kks.120.mcz ==================== Summary ==================== Name: HelpSystem-Core-kks.120 Author: kks Time: 2 April 2020, 8:45:13.607196 pm UUID: 33119c75-ba40-45d4-8ede-7086b7f4bc60 Ancestors: HelpSystem-Core-mt.119 Fetch a topic document afresh from the server if the previous fetch resulted in an 500 error. =============== Diff against HelpSystem-Core-mt.119 =============== Item was changed: ----- Method: HtmlHelpTopic>>document (in category 'accessing') ----- document + (document isNil or: [document includesSubstring: '<title>500 Internal']) ifTrue: [ + document := [ + (HTTPSocket httpGet: self url accept: 'text/html') contents + ] on: Error do: [:err | err printString]]. + ^document! - ^ document ifNil: [document := - [ - (HTTPSocket httpGet: self url accept: 'text/html') contents - ] on: Error do: [:err | err printString]]! |
Hi,
I have an alternate proposal to recover from 500 error on HTML help topics. Instead of retrying 3 times [1], we just back off and retry only when the document is needed next. If the server is busy then backing off may be better than retries. If a 'refresh' menu is available to force an update, then this changeset is not needed. [1] http://forum.world.st/The-Inbox-HelpSystem-Core-ct-131-mcz-td5112713.html Regards .. Subbu On 02/04/20 3:15 PM, [hidden email] wrote: > A new version of HelpSystem-Core was added to project The Inbox: > http://source.squeak.org/inbox/HelpSystem-Core-kks.120.mcz > > ==================== Summary ==================== > > Name: HelpSystem-Core-kks.120 > Author: kks > Time: 2 April 2020, 8:45:13.607196 pm > UUID: 33119c75-ba40-45d4-8ede-7086b7f4bc60 > Ancestors: HelpSystem-Core-mt.119 > > Fetch a topic document afresh from the server if the previous fetch resulted in an 500 error. > > =============== Diff against HelpSystem-Core-mt.119 =============== > > Item was changed: > ----- Method: HtmlHelpTopic>>document (in category 'accessing') ----- > document > > + (document isNil or: [document includesSubstring: '<title>500 Internal']) ifTrue: [ > + document := [ > + (HTTPSocket httpGet: self url accept: 'text/html') contents > + ] on: Error do: [:err | err printString]]. > + ^document! > - ^ document ifNil: [document := > - [ > - (HTTPSocket httpGet: self url accept: 'text/html') contents > - ] on: Error do: [:err | err printString]]! > > |
Hi Subbu! +1 Those arbitrary number of retries did never work for me in Metacello either. There should some delay in between. The one you proposed here sounds good. And we have a virtually unlimited number of retries here. :-) Best, Marcel
|
In reply to this post by commits-2
I think the proper way to do this would be to leave HTTPSocket behind and
rely on the response code instead of checking for a specific substring in the response body. Should the server change in any way (either the reverse proxy or the image), that string may not be there anymore. Levente On Thu, 2 Apr 2020, [hidden email] wrote: > A new version of HelpSystem-Core was added to project The Inbox: > http://source.squeak.org/inbox/HelpSystem-Core-kks.120.mcz > > ==================== Summary ==================== > > Name: HelpSystem-Core-kks.120 > Author: kks > Time: 2 April 2020, 8:45:13.607196 pm > UUID: 33119c75-ba40-45d4-8ede-7086b7f4bc60 > Ancestors: HelpSystem-Core-mt.119 > > Fetch a topic document afresh from the server if the previous fetch resulted in an 500 error. > > =============== Diff against HelpSystem-Core-mt.119 =============== > > Item was changed: > ----- Method: HtmlHelpTopic>>document (in category 'accessing') ----- > document > > + (document isNil or: [document includesSubstring: '<title>500 Internal']) ifTrue: [ > + document := [ > + (HTTPSocket httpGet: self url accept: 'text/html') contents > + ] on: Error do: [:err | err printString]]. > + ^document! > - ^ document ifNil: [document := > - [ > - (HTTPSocket httpGet: self url accept: 'text/html') contents > - ] on: Error do: [:err | err printString]]! |
On 03/04/20 1:24 PM, Levente Uzonyi wrote:
> I think the proper way to do this would be to leave HTTPSocket behind > and rely on the response code instead of checking for a specific > substring in the response body. httpGet does not return a HTTP response object but a string in case of errors. This is why I put in this check. Did you mean I could have done something like this: ^ document ifNil: [ |resp| resp := HTTPSocket httpGetDocument: self url accept:'text/html'. document := resp isString ifTrue: [nil] ifFalse: [resp contents]] This would mean retries even for 4xx or 3xx codes :-( Regards .. Subbu |
Free forum by Nabble | Edit this page |