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