PAS OE Webspeed compatibility mode - "unable to run web

Posted by adamy on 25-Oct-2019 15:11

There seems to be issues with trapping errors related to shared variables in PAS OE v12.1.

Our converted legacy webpseed application had many global shared and shared variables. This was causing unknown "unable to run web object" errors, I've looked at all the logs generated by the PAS Application and there is no reference of any error, even when changing logging level to 4 and adding things like 4gltrtace. 

Are there any known issue related to shared but not global shared variables - is it possible there is something else in the configuration I'm missing that would allow the cause of these errors to be reported? 

These are defined at the agent startup proc as new shared and shared inside programs many levels deep. Changing them to new global shared seems to fix the issue, but I am trying to remove all use of these shared variables and have only the required ones be passed down as param through the chain. unfortunately we have 1000s of programs to update and review. All appears good but in some cases the program will succefully complete and generate value HTML output, yet it also tacks and "unable to run web object" at the very bottom after referencing the same program that sucessfully generated all the output. 

All Replies

Posted by Peter Judge on 25-Oct-2019 20:28
I've not heard of any differences in (global) shared variables between Clasic WebSpped and PASOE.
 
You may want to use the session startup for PAS (rather than the agent stratup).
And if you need to set them per request, you can use an activate procedure,
 
Posted by tim on 26-Oct-2019 13:07

If they're defined in the agent startup procedure, then only the ABL Session that happened to run the agent startup procedure will have them defined. Instead, they should be defined in the session startup procedure (which is run whenever an ABL Session is created). However, if they are not global shared, none of them will be seen at all because the session startup procedure is not part of the call-stack when you run a request.

Posted by adamy on 28-Oct-2019 19:48

I'm not as concerned with where they need to be setup as - They are only needed at the agent level, but I've tried putting them in the session startup also with the same result. In the end I'm working towards removing them so they won't be required in either. The real concern is that when an error does occur it isn't getting logged.

I see webspeed outputting: unable to run Web object 'myProgramName.p' but nothing I can find is saying why that happened.

In the case where I included a NO-UNDO on a shared definition I would get this error and nothing else.

Once that was corrected it was able to run the program to completion and generate a full page of output.

Most programs work as expected now, except for ones that call even older legacy character code we've been bringing forward that has it's own shared variable use. In a handful of those programs it does complete but after the usual html output from webspeed it also tacks on unable to run Web object 'myProgramName.p' below.

I'm just looking to figure out what might be preventing these errors from getting to the logs as it is making it very difficult to find where in the long chain of calls the issue is actually happening.

Posted by Peter Judge on 04-Nov-2019 09:32
If you see that message returned, without any 'real' errors , then it's possibly bad or missing configuration.
 
The internal component that runs the webhandle can log which handler is used for URI. You'll need to have a logging level of at least 5 (set via -loggingLevel 5) .  
 
        logger:Debug(substitute('Request for path "&1" using template "&2" and handler "&3"',
                        requestPath,
                        uriTemplate,
                        pcHandlerName)).
 
That should at least help clear that part up.
 
 
Posted by adamy on 04-Nov-2019 14:02

I upped the logging level and get the following output:

----------------------------------------------------

2019-11-04T08:57:34.035-0500 20382154 59834633 4 AS-10 ROOT:w:00000002 AS Server Message state = MSGSTATE_INITRQ

2019-11-04T08:57:34.035-0500 20382154 59834633 3 AS-10 ROOT:w:00000003 AS requestID= ROOT:w:00000003

2019-11-04T08:57:34.035-0500 20382154 59834633 4 AS-10 ROOT:w:00000003 AS -- TRACE: Open4GLWriteLast 2501. (8401)

2019-11-04T08:57:34.035-0500 20382154 59834633 4 AS-10 ROOT:w:00000003 AS -- TRACE: Open4GLWrite 2501. (8402)

2019-11-04T08:57:34.035-0500 20382154 59834633 4 AS-10 ROOT:w:00000003 AS -- TRACE: cso4GL: Before loadProc() (8458)

2019-11-04T08:57:34.035-0500 20382154 59834633 4 AS-10 ROOT:w:00000003 AS -- TRACE: STATELESS: locating proxy-id 558792390 (Progress.Web.InternalWebHandler:HandleRequest) for operation 16 (8458)

2019-11-04T08:57:34.035-0500 20382154 59834633 3 AS-10 ROOT:w:00000003 AS -- TRACE: SINGLETON Non-Void Method 'Progress.Web.InternalWebHandler:HandleRequest' START (Proxy 558792390).

2019-11-04T08:57:34.035-0500 20382154 59834633 4 AS-10 ROOT:w:00000003 AS -- TRACE: STATELESS: located proxy-id 558792390 (Progress.Web.InternalWebHandler:HandleRequest) for operation 16 (8458)

2019-11-04T08:57:34.035-0500 20382154 59834633 4 AS-10 ROOT:w:00000003 AS -- TRACE: cso4GL: After successful loadProc() (8458)

2019-11-04T08:57:34.035-0500 20382154 59834633 4 AS-10 ROOT:w:00000003 AS -- TRACE: Set open 4GL server state to 2. (8400)

2019-11-04T08:57:34.035-0500 20382154 59834633 4 AS-10 ROOT:w:00000003 AS -- TRACE: cso4GL: In execProc() - before execution. (8458)

2019-11-04T08:57:34.035-0500 20382154 59834633 4 AS-10 ROOT:w:00000003 AS -- TRACE: STATELESS: running stateless internal function on proxy-id 558792390  (8458)

2019-11-04T08:57:34.037-0500 20382154 59834633 1 AS-10 ROOT:w:00000003 LogMgrWrtr     [OE.W.InternalWebRouter DEBUG] Request for path "/web/wam_tmpl/catalog_product.p" using template "" and handler "OpenEdge.Web.CompatibilityHandler"

2019-11-04T08:57:34.038-0500 20382154 59834633 1 AS-10 ROOT:w:00000003 LogMgrWrtr     [OE.W.InternalWebRouter DEBUG] Debug mode: OFF

2019-11-04T08:57:34.040-0500 20382154 59834633 1 AS-10 ROOT:w:00000003 LogMgrWrtr     [OE.W.InternalWebRouter DEBUG] Handler instance OpenEdge.Web.CompatibilityHandler_1116 used for handler OpenEdge.Web.CompatibilityHandler

2019-11-04T08:57:34.333-0500 20382154 59834633 1 AS-10 ROOT:w:00000003 -- (Procedure: 'wam_tmpl/catalog_product.p' Line:15036) End of catalog_product.p's finally block

2019-11-04T08:57:34.336-0500 20382154 59834633 3 AS-10 ROOT:w:00000003 AS -- TRACE: SINGLETON Non-Void Method (Proxy 558792390) END SUCCESS.

2019-11-04T08:57:34.336-0500 20382154 59834633 4 AS-10 ROOT:w:00000003 AS -- TRACE: cso4GL: In execProc() - successful execution. (8458)

2019-11-04T08:57:34.336-0500 20382154 59834633 4 AS-10 ROOT:w:00000003 AS -- TRACE: cso4GL: In execCall() - execProc() success. (8458)

2019-11-04T08:57:34.336-0500 20382154 59834633 4 AS-10 ROOT:w:00000003 AS -- TRACE: Set open 4GL server state to 3. (8400)

2019-11-04T08:57:34.339-0500 20382154 59834633 4 AS-10 ROOT:w:00000003 AS Server Message state = MSGSTATE_SENDRESP

2019-11-04T08:57:34.339-0500 20382154 59834633 4 AS-10 ROOT:w:00000003 AS -- TRACE: Set open 4GL server state to 1. (8400)

2019-11-04T08:57:34.339-0500 20382154 59834633 4 AS-10 ROOT:w:00000003 AS -- TRACE: open4GLRead 59. (8403)

2019-11-04T08:57:34.339-0500 20382154 59834633 4 AS-10 ROOT:w:00000003 AS Server Message state = MSGSTATE_FINISHRQ

2019-11-04T08:57:34.345-0500 20382154 59834633 4 AS-10 ROOT:w:00000003 AS Server Message state = MSGSTATE_IDLE

2019-11-04T08:57:34.524-0500 20382154 59834633 4 AS-10 ROOT:w:00000003 AS Server Message state = MSGSTATE_INITRQ

-------------------------------------------

This is the logging error that I'm not sure about:  

2019-11-04T08:37:59.724-0500 20382154 59834633 1 AS-10 ROOT:w:00000001 LogMgrWrt r INFO: Current session client type MULTI-SESSION-AGENT does not support named logs 

I'm not sure where in the config it would be set to use a named log, or if this is even related - is this just something that it does when running in compatibility mode?

that error seems to be pretty common in other peoples log posts on here but never seems to get mentioned directly in any thread.

This logging issues seems to be exclusively a problem for shared variable errors as I do get all other log messages I am expecting.

If you have any recommendations for what could be wrong with the config I'd be happy to hear them

Posted by Peter Judge on 04-Nov-2019 16:33

This is the line

2019-11-04T08:57:34.037-0500 20382154 59834633 1 AS-10 ROOT:w:00000003 LogMgrWrtr     [OE.W.InternalWebRouter DEBUG] Request for path "/web/wam_tmpl/catalog_product.p" using template "" and handler "OpenEdge.Web.CompatibilityHandler"

That tells me that you don't have the handler defined in the webapp. The value of the template  indicates that there's missing config.  Look in conf/openedge.properties file for a group like this. I'm guessing there aren't any other lines beginning with handler<number>=
 
[<your-abl-app-name>.ROOT.WEB]
    adapterEnabled=0
    defaultCookieDomain=
    defaultCookiePath=
    defaultHandler=OpenEdge.Web.CompatibilityHandler
    srvrAppMode=production
    srvrDebug=0
    wsRoot=/static/webspeed
 
 
The handlers lines will look something like
    handler1=Conference.SI.TalksHandler   : /speakers/{spkr}/talks/{tlk}
    handler2=Conference.SI.SpeakersHandler: /speakers/{spkr}
    handler3=Conference.SI.SpeakersHandler: /speakers
    handler4=Conference.SI.TalksHandler   : /talks/{tlk}
    handler5=Conference.SI.TalksHandler   : /talks
    handler6=OpenEdge.Web.DataObject.DataObjectHandler : /pdo
 
 
Posted by adamy on 04-Nov-2019 20:02

That section of my config looks like:

[wam18.ROOT.WEB]

   defaultCookieDomain=

   wsRoot=/static/webspeed

   srvrDebug=0

   defaultHandler=OpenEdge.Web.CompatibilityHandler

   adapterEnabled=1

   defaultCookiePath=

   srvrAppMode=production

I have run through many different guides on setting on a PAS OE instance to run a legacy webpseed app, none seemed to cover everything required to get it running.

This version was created from the openedge management web interface.

We only have 1 app running and it is just plain old webspeed with &out's - no web services, no REST, no spring security or any other tomcat functions that aren't mandatory.

I'm not sure what the Template is supposed to be setup as in this case or where to find information on how it should be configured.

Do you have an recommendations on where to find current up to date documentation?

I've tried looking through www.progress.com/documentation but the links from there for openedge and PAS don't ever seem to get into much technical details, just lots of short little articles.

The best I could find is the openedge.properties.README file and it seems that the handler# values are only required for custom URIs? But we are only using the default OpenEdge.Web.CompatibilityHandler (/web) so none of those other handler# values are required?

Posted by adamy on 19-Nov-2019 16:37

[mention:9e4ee96fac634b8f91b580e1fb4f7e71:e9ed411860ed4f2ba0265705b8793d05]  any updates or recommendations?

Posted by Peter Judge on 20-Nov-2019 15:15

@adamy You are correct in that all classic webspeed pages can be served through the CompatibilityHandler and the defaultHandler configuration.

This is the logging error that I'm not sure about:  

2019-11-04T08:37:59.724-0500 20382154 59834633 1 AS-10 ROOT:w:00000001 LogMgrWrt r INFO: Current session client type MULTI-SESSION-AGENT does not support named logs

I'm not sure where in the config it would be set to use a named log, or if this is even related - is this just something that it does when running in compatibility mode?

This message comes from the logging component ; you can ignore it.

I've tried looking through www.progress.com/documentation but the links from there for openedge and PAS don't ever seem to get into much technical details, just lots of short little articles.

There's often linked content but the UX isn't good - opening the Table of Contents can help with related stuff.

You will see the error message in a couple of circumstances - can't find the .P on PROPATH , or can't run it. I"m not sure if that's the case. There's a "logNote" function that may record the reason why, but I don't know the Classic WebSpeed code well enough to tell you how to configure it.

This thread is closed