Mike -

That was exactly it - the dashboard code has a set-session-field call in it. When I remove that call, the progress indicator on the subsequent page starts working. I didn't see anything about that suite of functions blocking concurrent requests in the docs. But thanks for pointing it out - I'll code the dashboard differently to track that bit.

Steve


On 1/4/2013 12:54 PM, Michael Blakeley wrote:
Check your code for calls to http://docs.marklogic.com/xdmp:set-session-field 
and its friends. Those will block concurrent requests, because the session data 
has to be locked for update. I believe the lock is per-host, not per-cluster or 
per-port.

-- Mike

On 4 Jan 2013, at 08:00 , Steve Carton <[email protected]> wrote:

Btw, if I delete the session cookie in my browser, the progress query starts 
working.

Steve
On 1/3/2013 5:15 PM, Steve Carton wrote:
Hi Guys,

I'm back at this problem after the holidays - and I hope all of you had a nice 
time and a happy new year.

I'm beginning to wonder if this is a Marklogic issue at all, but I'm going to 
post my latest tests and see if these cause someone to think of an answer. 
Failing that, I'll try and put the code out for your consumption.

I discovered some interesting things. The way this application works (it is a browser 
application) is that the user first comes to a "Dashboard" that gives them some 
data statistics and some options. It also presents a number of content editions. The user 
can click on an edition and they get more stats and some edition options. One of the 
edition options is to perform my cross-reference analysis. If the user clicks on that 
link, the browser is directed to a URL that controls the cross-reference analysis. From 
there, the user can start the analysis - clicking the start button triggers an Ajax call 
to ML to run the analysis and then subsequent Ajax calls for the progress. It is these 
subsequent calls that lock up.

What I've found is that if I start a browser and point it at the URL for the 
cross-reference analysis page, and then start the analysis, it all works fine - 
the analysis call is made, the analysis starts and the subsequent progress 
requests are made, processed and the progress bar is updated. It is only if I 
first go to that opening dashboard that the progress calls wait. And, if I 
first go to the dashboard and then to the cross-reference analyzer and start 
it, although the Ajax calls to update the progress wait, I can open a different 
browser and enter the URL to the progress XQY directly and that works.

So this had me believing that one of two things is happening - either the 
browser is not clearing some object or another from the dashboard that is 
preventing the progress Ajax requests from being sent to the server, or that 
there is some kind of session-related block in Marklogic that is somehow set 
and not cleared when the dashboard is accessed, but not set when the 
cross-reference analyzer is loaded directly.

So I installed a TCP/IP sniffer to look at the requests being sent to the 
server and as near as I can tell, the progress requests are in fact going to 
the server even though a response is not being sent back.

Is there such a think as a session lock? Or a session query limit?


On 12/20/2012 7:17 PM, Charles Greer wrote:
Hi Steve,

Did you verify Geert's guess that the status query might be running in update 
mode?

What you're describing now is rather perplexing, you might want to share some 
code; maybe the issue it can be reproduced.

Charles


On 12/20/2012 03:33 PM, Steve Carton wrote:
Geert, Charles,

To test this, I removed logging entirely so that the main query now just loops 
over all of the cross reference elements.


Some of these elements get an update made to them - a flag if you will 
indicating that the cross reference target doesn't exist - cannot be resolved.


But even with creation of the log elements removed, the second, progress query 
waits for the first one to complete.


Steve

====================================================


'stitching': or just use search:search on that log collection to scroll through 
the log page by page. If you have a range index on some dateTime field, you 
should be able to sort it as well..

Cheers,

Geert

*Van:* [email protected] [mailto: 
[email protected]] *Namens *Charles Greer *Verzonden:* woensdag 
19 december 2012 22:25 *Aan:* [email protected] *Onderwerp:* Re: 
[MarkLogic Dev General] Fwd: Re: running two queries at the same time

Hello Steve,

Geert's suggestion might avoid this issue entirely. MarkLogic is much better at 
inserting a lot of small documents than appending to a big one. I think you'll 
end up with a lot less disk IO by avoiding an operation that updates a big 
document lots of times.

If you need to return the whole log as one document you might provide an 
endpoint that stitches together a lot of documents into one wrapper.

Hope that helps,

Charles

On 12/19/2012 07:36 AM, Steve Carton wrote:

Geert -

They are two separate .xqy files. The big one does update the log document. The 
small one has an option to return log information or to return just progress.

So I removed the option to return the log data. Now it simply returns the 
contents of the server fields. But it still waits.

_______________________________________________

General mailing list

[email protected]

http://developer.marklogic.com/mailman/listinfo/general



_______________________________________________
General mailing list

[email protected]
http://developer.marklogic.com/mailman/listinfo/general
--
Charles Greer
Senior Engineer
MarkLogic Corporation

[email protected]

Phone: +1 707 408 3277

www.marklogic.com


_______________________________________________
General mailing list

[email protected]
http://developer.marklogic.com/mailman/listinfo/general
--
Steve


_______________________________________________
General mailing list

[email protected]
http://developer.marklogic.com/mailman/listinfo/general
--
Steve
_______________________________________________
General mailing list
[email protected]
http://developer.marklogic.com/mailman/listinfo/general
_______________________________________________
General mailing list
[email protected]
http://developer.marklogic.com/mailman/listinfo/general




--
/Steve/
_______________________________________________
General mailing list
[email protected]
http://developer.marklogic.com/mailman/listinfo/general

Reply via email to