[MarkLogic Dev General] General Digest, Vol 133, Issue 80

Rahul Gupta rahul.gupta at nagarro.com
Thu Jul 30 09:14:45 PDT 2015


Hi David,

Thanks for the response. Please find the attached app-server configuration. 

What I am exactly doing is I want to throw some custom error which was running in ML 6 from the user-defined error-handler in ML 8 as well when an unauthorized user comes in who is not being listed in Security database.

I recorded the traces for the events you let me know, and it is tracing that it is going to error-switch.xqy , default for Admin App-Server but it does not executes it. I don't know how to solve this now but I definitely want to execute my custom error-handler for an unauthorized user since I don't want to change the applications written on this error.

[Event:id=AppRequest Authentication Details] Authenticated Request User:  0
[Event:id=HTTPRequest ErrorFormat] Dispatching error to builtin handler
[Event:id=HTTPRequest ErrorFormat] Resolved error format:  xml
[Event:id=AppRequest Authentication Details] Authenticated Request User:  7071164303237443533
[Event:id=AppRequest Authentication Details] Current transaction ID/Mode/isolation:  0 0 2
[Event:id=AppRequest Authentication Details] Login User / Transaction user  0 7071164303237443533
[Event:id=AppServer ErrorHandler] AppServer configured error handler in errorHandler:  /error-switch.xqy
[Event:id=URL Rewrite] Original URL /get-error-log.xqy?filename=ErrorLog.txt
[Event:id=AppRequest Rewrite] handleRewrite
[Event:id=AppRequest RewriteDetails] handleRewrite found file XQuery rewriter in App Modules Filesystem:  Admin/rewriter.xqy
[Event:id=URL Rewrite] After XQuery Rewriter URL:  /get-error-log.xqy?filename=ErrorLog.txt
[Event:id=URL Rewrite] After XQuery xquery parsed URL:  filename=ErrorLog.txt
[Event:id=URL Rewrite] After XQuery Parsed URL:  /get-error-log.xqy?filename=ErrorLog.txt
[Event:id=AppRequest RewriteDetails] Succeeded with validated modifications:  ['PATH','QUERY_PARAM']
[Event:id=AppRequest RewriteDetails] Path changed to:  /get-error-log.xqy
[Event:id=AppRequest RewriteDetails] Query Params changed to:  ['filename=ErrorLog.txt']
[Event:id=AppRequest RewriteDetails] URL rewritten to:  /get-error-log.xqy?filename=ErrorLog.txt
[Event:id=AppServer ErrorHandler] Request error handler in effect:  /error-switch.xqy
[Event:id=URL Rewrite] Final URL:  /get-error-log.xqy?filename=ErrorLog.txt
[Event:id=AppRequest RewriteDetails] Current transaction ID/Mode/isolation:  0 0 2
[Event:id=AppServer ErrorHandler] Entering sendResult: 
[Event:id=AppRequest Authentication Details] Authenticated Request User:  7071164303237443533
[Event:id=AppRequest Authentication Details] Current transaction ID/Mode/isolation:  0 0 2
[Event:id=AppRequest Authentication Details] Login User / Transaction user  0 7071164303237443533
[Event:id=AppServer ErrorHandler] AppServer configured error handler in errorHandler:  /error-switch.xqy
[Event:id=URL Rewrite] Original URL /favicon.ico
[Event:id=AppRequest Rewrite] handleRewrite
[Event:id=AppRequest RewriteDetails] handleRewrite found file XQuery rewriter in App Modules Filesystem:  Admin/rewriter.xqy
[Event:id=URL Rewrite] After XQuery Rewriter URL:  /favicon.ico
[Event:id=URL Rewrite] After XQuery xquery parsed URL:  
[Event:id=URL Rewrite] After XQuery Parsed URL:  /favicon.ico
[Event:id=AppRequest RewriteDetails] Succeeded with validated modifications:  ['PATH','QUERY_PARAM']
[Event:id=AppRequest RewriteDetails] Path changed to:  /favicon.ico
[Event:id=AppRequest RewriteDetails] Query Params changed to:  []
[Event:id=AppRequest RewriteDetails] URL rewritten to:  /favicon.ico
[Event:id=AppServer ErrorHandler] Request error handler in effect:  /error-switch.xqy
[Event:id=URL Rewrite] Final URL:  /favicon.ico
[Event:id=AppRequest RewriteDetails] Current transaction ID/Mode/isolation:  0 0 2
[Event:id=AppRequest Authentication Details] Authenticated Request User:  7071164303237443533
[Event:id=AppRequest Authentication Details] Current transaction ID/Mode/isolation:  0 0 2
[Event:id=AppRequest Authentication Details] Login User / Transaction user  0 7071164303237443533
[Event:id=AppServer ErrorHandler] AppServer configured error handler in errorHandler:  /error-switch.xqy
[Event:id=URL Rewrite] Original URL /get-error-log.xqy?filename=ErrorLog.txt
[Event:id=AppRequest Rewrite] handleRewrite
[Event:id=AppRequest RewriteDetails] handleRewrite found file XQuery rewriter in App Modules Filesystem:  Admin/rewriter.xqy
[Event:id=URL Rewrite] After XQuery Rewriter URL:  /get-error-log.xqy?filename=ErrorLog.txt
[Event:id=URL Rewrite] After XQuery xquery parsed URL:  filename=ErrorLog.txt
[Event:id=URL Rewrite] After XQuery Parsed URL:  /get-error-log.xqy?filename=ErrorLog.txt
[Event:id=AppRequest RewriteDetails] Succeeded with validated modifications:  ['PATH','QUERY_PARAM']
[Event:id=AppRequest RewriteDetails] Path changed to:  /get-error-log.xqy
[Event:id=AppRequest RewriteDetails] Query Params changed to:  ['filename=ErrorLog.txt']
[Event:id=AppRequest RewriteDetails] URL rewritten to:  /get-error-log.xqy?filename=ErrorLog.txt
[Event:id=AppServer ErrorHandler] Request error handler in effect:  /error-switch.xqy
[Event:id=URL Rewrite] Final URL:  /get-error-log.xqy?filename=ErrorLog.txt
[Event:id=AppRequest RewriteDetails] Current transaction ID/Mode/isolation:  0 0 2
[Event:id=AppServer ErrorHandler] Entering sendResult: 
[Event:id=AppRequest Authentication Details] Authenticated Request User:  7071164303237443533
[Event:id=AppRequest Authentication Details] Current transaction ID/Mode/isolation:  0 0 2
[Event:id=AppRequest Authentication Details] Login User / Transaction user  0 7071164303237443533
[Event:id=AppServer ErrorHandler] AppServer configured error handler in errorHandler:  /error-switch.xqy
[Event:id=URL Rewrite] Original URL /favicon.ico
[Event:id=AppRequest Rewrite] handleRewrite
[Event:id=AppRequest RewriteDetails] handleRewrite found file XQuery rewriter in App Modules Filesystem:  Admin/rewriter.xqy
[Event:id=URL Rewrite] After XQuery Rewriter URL:  /favicon.ico
[Event:id=URL Rewrite] After XQuery xquery parsed URL:  
[Event:id=URL Rewrite] After XQuery Parsed URL:  /favicon.ico
[Event:id=AppRequest RewriteDetails] Succeeded with validated modifications:  ['PATH','QUERY_PARAM']
[Event:id=AppRequest RewriteDetails] Path changed to:  /favicon.ico
[Event:id=AppRequest RewriteDetails] Query Params changed to:  []
[Event:id=AppRequest RewriteDetails] URL rewritten to:  /favicon.ico
[Event:id=AppServer ErrorHandler] Request error handler in effect:  /error-switch.xqy
[Event:id=URL Rewrite] Final URL:  /favicon.ico
[Event:id=AppRequest RewriteDetails] Current transaction ID/Mode/isolation:  0 0 2
[Event:id=AppRequest Authentication Details] Authenticated Request User:  7071164303237443533
[Event:id=AppRequest Authentication Details] Current transaction ID/Mode/isolation:  0 0 2
[Event:id=AppRequest Authentication Details] Login User / Transaction user  0 7071164303237443533
[Event:id=AppServer ErrorHandler] AppServer configured error handler in errorHandler:  /error-switch.xqy
[Event:id=URL Rewrite] Original URL /get-error-log.xqy?filename=ErrorLog.txt
[Event:id=AppRequest Rewrite] handleRewrite
[Event:id=AppRequest RewriteDetails] handleRewrite found file XQuery rewriter in App Modules Filesystem:  Admin/rewriter.xqy
[Event:id=URL Rewrite] After XQuery Rewriter URL:  /get-error-log.xqy?filename=ErrorLog.txt
[Event:id=URL Rewrite] After XQuery xquery parsed URL:  filename=ErrorLog.txt
[Event:id=URL Rewrite] After XQuery Parsed URL:  /get-error-log.xqy?filename=ErrorLog.txt
[Event:id=AppRequest RewriteDetails] Succeeded with validated modifications:  ['PATH','QUERY_PARAM']
[Event:id=AppRequest RewriteDetails] Path changed to:  /get-error-log.xqy
[Event:id=AppRequest RewriteDetails] Query Params changed to:  ['filename=ErrorLog.txt']
[Event:id=AppRequest RewriteDetails] URL rewritten to:  /get-error-log.xqy?filename=ErrorLog.txt
[Event:id=AppServer ErrorHandler] Request error handler in effect:  /error-switch.xqy
[Event:id=URL Rewrite] Final URL:  /get-error-log.xqy?filename=ErrorLog.txt
[Event:id=AppRequest RewriteDetails] Current transaction ID/Mode/isolation:  0 0 2
[Event:id=AppServer ErrorHandler] Entering sendResult: 
[Event:id=AppRequest Authentication Details] Authenticated Request User:  7071164303237443533
[Event:id=AppRequest Authentication Details] Current transaction ID/Mode/isolation:  0 0 2
[Event:id=AppRequest Authentication Details] Login User / Transaction user  0 7071164303237443533
[Event:id=AppServer ErrorHandler] AppServer configured error handler in errorHandler:  /error-switch.xqy
[Event:id=URL Rewrite] Original URL /favicon.ico
[Event:id=AppRequest Rewrite] handleRewrite
[Event:id=AppRequest RewriteDetails] handleRewrite found file XQuery rewriter in App Modules Filesystem:  Admin/rewriter.xqy
[Event:id=URL Rewrite] After XQuery Rewriter URL:  /favicon.ico
[Event:id=URL Rewrite] After XQuery xquery parsed URL:  
[Event:id=URL Rewrite] After XQuery Parsed URL:  /favicon.ico
[Event:id=AppRequest RewriteDetails] Succeeded with validated modifications:  ['PATH','QUERY_PARAM']
[Event:id=AppRequest RewriteDetails] Path changed to:  /favicon.ico
[Event:id=AppRequest RewriteDetails] Query Params changed to:  []
[Event:id=AppRequest RewriteDetails] URL rewritten to:  /favicon.ico
[Event:id=AppServer ErrorHandler] Request error handler in effect:  /error-switch.xqy
[Event:id=URL Rewrite] Final URL:  /favicon.ico
[Event:id=AppRequest RewriteDetails] Current transaction ID/Mode/isolation:  0 0 2


Thanks,
Rahul

-----Original Message-----
From: general-bounces at developer.marklogic.com [mailto:general-bounces at developer.marklogic.com] On Behalf Of general-request at developer.marklogic.com
Sent: Tuesday, July 28, 2015 8:52 PM
To: general at developer.marklogic.com
Subject: General Digest, Vol 133, Issue 80

Send General mailing list submissions to
	general at developer.marklogic.com

To subscribe or unsubscribe via the World Wide Web, visit
	http://developer.marklogic.com/mailman/listinfo/general
or, via email, send a message with subject or body 'help' to
	general-request at developer.marklogic.com

You can reach the person managing the list at
	general-owner at developer.marklogic.com

When replying, please edit your Subject line so it is more specific than "Re: Contents of General digest..."


Today's Topics:

   1. Re: ML 8 Error Handler	Non-Execution	|	Unauthorized User
      (David Lee)


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

Message: 1
Date: Tue, 28 Jul 2015 19:52:11 +0000
From: David Lee <David.Lee at marklogic.com>
Subject: Re: [MarkLogic Dev General] ML 8 Error Handler	Non-Execution
	|	Unauthorized User
To: MarkLogic Developer Discussion <general at developer.marklogic.com>
Message-ID:
	<6AD72D76C2D6F04D8BE471B70D4B991E0BD11BDA at EXCHG10-BE01.marklogic.com>
Content-Type: text/plain; charset="us-ascii"

I belive the documentation is incomplete in this area.
I am looking into it.
Could you provide your app server configuration details and how you upgraded it from 6.x ? (did you copy it exactly, recreate it, use package manager ?)

In particular
Port
rewriter URL
error handler url
Authentication type (basic/app-level etc) default error format Database Modules DB Modules Root



There is a core change in 8.0 where some types of HTTP level validation are now always generated by the core server where in 7.x they were passed to the user defined error handler.
Specifically any 'HTTP protocol errors', HTTP validation or authentication errors that occur before the request is sufficiently processed to determine if the user is allowed to execute the rewriter are now handled internally according to the precedence documented.

Errors thrown during user error handler execution are similarly handled.


Its not clear which is the case for your example.
Also the setting for default error format only applies to core server generated errors.  Application generated errors can get the value of the default error format and choose to generate an appropriate format result or not.

If your using the declarative (XML) rewriter you can set the in-effect error format in the rewriter (overriding the default format).

There are several trace events that report on the resolution and handling of error messages as they occur.   If you enable tracing and add these events then in ErrorLog.txt you will get a great deal of detail (more than you may want in a production system).

Error and format handling
     <event-id>AppServer ErrorHandler</event-id>
      <event-id>HTTPRequest ErrorFormat</event-id>


Rewriter details
      <event-id>AppRequest RewriteDetails</event-id>
      <event-id>AppRequest Rewrite</event-id>
      <event-id>AppRequest XML Rewriter</event-id>
      <event-id>Declarative Rewriter</event-id>
      <event-id>URL Rewrite</event-id>
      <event-id>Rewriter Evaluator</event-id>
      <event-id>Rewriter Evaluator Verbose</event-id>
      <event-id>Rewriter Invoke</event-id>
      <event-id>Rewriter Parser</event-id>
      <event-id>Rewriter Result</event-id>

Authentication
      <event-id>AppRequest Authentication Details</event-id>

-----------------------------------------------------------------------------
David Lee
Lead Engineer
MarkLogic Corporation
dlee at marklogic.com
Phone: +1 812-482-5224
Cell:  +1 812-630-7622
www.marklogic.com<http://www.marklogic.com/>

From: general-bounces at developer.marklogic.com [mailto:general-bounces at developer.marklogic.com] On Behalf Of Danny Sokolsky
Sent: Tuesday, July 28, 2015 2:14 PM
To: MarkLogic Developer Discussion <general at developer.marklogic.com>
Subject: Re: [MarkLogic Dev General] ML 8 Error Handler Non-Execution | Unauthorized User

Have you looked at your rewriter too?  Maybe the 401 is for the rewriter, not the error handler?

Another clue might come from the AccessLog for that app server.

-Danny

From: general-bounces at developer.marklogic.com<mailto:general-bounces at developer.marklogic.com> [mailto:general-bounces at developer.marklogic.com] On Behalf Of Rahul Gupta
Sent: Tuesday, July 28, 2015 9:55 AM
To: general at developer.marklogic.com<mailto:general at developer.marklogic.com>
Subject: [MarkLogic Dev General] ML 8 Error Handler Non-Execution | Unauthorized User

Hi,

I am currently migrating my ML 6.0-5.3 code to ML 8.0-3 and I found that error-handler for the App-server is not being executed when an unauthorized user logs in. I did some research and came to this link:
https://docs.marklogic.com/guide/app-dev/appserver-control#id_84264

But this link has no change as compared to ML 6 documentation and it was doing custom error handling for an unauthorized-user.
https://docs.marklogic.com/6.0/guide/app-dev/appserver-control#id_84264

[cid:image001.png at 01D0C94D.37EBA800]

And in error-handler.xqy, it is written like as follows:

let $error as element(e:error) :=
      if ( fn:exists($error:errors) ) then
        local:handle-thrown-exception()
      else
        local:handle-general-error()

Also, the app-server default user is assigned with admin role and default error format in ML 8 as "xml" tried using "html, json, compatible". Hence it has the execute permissions too. Still Not working... Can anyone please suggest how to throw custom message for an unauthorized user from the error handler mechanism.

Currently I am getting is:

<error-response xmlns='http://marklogic.com/xdmp/error'>
     <status-code>401</status-code>
     <status>Unauthorized</status>
     <message>401 Unauthorized</message> </error-response>

Thanks,
Rahul
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://developer.marklogic.com/pipermail/general/attachments/20150728/64bbc110/attachment.html
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image001.png
Type: image/png
Size: 4557 bytes
Desc: image001.png
Url : http://developer.marklogic.com/pipermail/general/attachments/20150728/64bbc110/attachment.png 

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

_______________________________________________
General mailing list
General at developer.marklogic.com
Manage your subscription at: 
http://developer.marklogic.com/mailman/listinfo/general


End of General Digest, Vol 133, Issue 80
****************************************
-------------- next part --------------
A non-text attachment was scrubbed...
Name: App_Server_Configuration.xml
Type: application/xml
Size: 3703 bytes
Desc: App_Server_Configuration.xml
Url : http://developer.marklogic.com/pipermail/general/attachments/20150730/e4cd4a3a/attachment-0001.rdf 


More information about the General mailing list