I just took the example Domain.xml and added the two additional "<store>" entries needed to run the testsuite. So there's no reason that it is that complicated except that I'm not sure what I can validly take out of it since it is the example that comes with Slide :-) I don't have security enabled but I do need locks and version control. I also need clustering support. I've commented out the property extractors already as I won't need those just yet but I'm not removing the commented out stuff so I can compare with the HEAD whenever fixes come in. I'm using the WebDAV client to access the server. So if you have suggestions for simplification (particularly how to get rid of the user and role definitions and authzn action declarations if I don't need them) I would appreciate it.
but it seems all stores go to the same logical DB2 database, right?
Yes, that was my intention :-)
If so the problem seems pretty clear to me. All three stores with different connections try to acquire locks on the same tables, mutually blocking each other. This would be no deadlock, but rather a livelock or maybe a distributed deadlock. No chance for DB2 to detect it.
In this case I don't think that I have even made it to the point where one of the other stores is operational yet. Ie. it hangs just when it is about to start the "/files_2" store. I think it has just processed the "/files" subjectnode:
<objectnode> classname="org.apache.slide.structure.SubjectNode"
uri="/files">
...
</objectnode>
<objectnode classname="org.apache.slide.structure.SubjectNode"
uri="/files_2">
...
</objectnode>
And sometime between when the "/files" subjectnode is loaded and we are
about to read the "/files_2" subjectnode from the db to check for its
existence the db goes haywire and running "select" statements from the db2
prompt to the URI table will hang until I shutdown the server. Even though
I'm not currently running a statement on the server.
The creation of "/files" and "/files_2" contain the statements that block each other I guess.
As I said I do not know what you are after, but could you consider to either simplify the Domain.xml or give each store a logical database of its own?
I guess what I'm really after is confirmation of what the correct nodestore configuration is when I want to run multiple scopes/stores as is needed for the testsuite. And I did try running a separate db for each nodestore too, but I get exactly the same problem. Which indicates that the problem isn't localized to sharing a nodestore between stores.
Hard to believe. Do you get it running with only a single store configured?
Can I define one nodestore for all <store> definitions? The "reference" keyword only seems to work within a <store> definition so I can't set the nodestores of the other <store> entries to reference the nodestore in the first. Unless I'm just not doing it right?
I understand the configuration you are trying to do simply is not possible with the current Slide release :(
Oliver
Thanks, Warwick
-----Original Message-----
From: Oliver Zeigermann [mailto:[EMAIL PROTECTED] Sent: Tuesday, September 07, 2004 4:39 PM
To: Slide Users Mailing List
Subject: Re: DB2 server not responding after short time using Slide 2.1 be
ta
Hi Warwick!
This is a complicated Domain.xml ;) Any special reason it is that complicated? I am familiar with DB, but it seems all stores go to the same logical DB2 database, right? If so the problem seems pretty clear to me. All three stores with different connections try to acquire locks on the same tables, mutually blocking each other. This would be no deadlock, but rather a livelock or maybe a distributed deadlock. No chance for DB2 to detect it. As I said I do not know what you are after, but could you consider to either simplify the Domain.xml or give each store a logical database of its own?
Oliver
Warwick Burrows wrote:
Hi Oliver,
Actually I was hoping you'd just "eyeball" the Domain.xml file I sent to make sure that I'm doing the appropriate thing with my jdbc store configurations and sequence store configurations for the additional scopes I've added. Basically I want to be sure that I have a valid "multi-scope configuration" as I'm not even sure I have that. Ie. I would like to share the one jdbc nodestore across all three scopes (<store> definitions) and not have a separate DB2 db for each.
Here's an excerpt of the Domain.xml since the attachment didn't make it last time. It's easier to read in a maximized mail reader window.
<?xml version="1.0"?>
<slide>
<namespace name="cmslide">
<definition>
<store name="tx">
<nodestore classname="org.apache.slide.store.impl.rdbms.JDBCStore">
<parameter
name="adapter">org.apache.slide.store.impl.rdbms.DB2RDBMSAdapter</parameter>
<parameter name="driver">com.ibm.db2.jcc.DB2Driver</parameter>
<parameter name="url">jdbc:db2://machine:50000/DB2DB</parameter>
<parameter name="user">user</parameter>
<parameter name="password">pwd</parameter>
<parameter name="dbcpPooling">true</parameter>
<parameter name="maxPooledConnections">50</parameter>
<parameter name="isolation">READ_COMMITTED</parameter>
<parameter name="compress">false</parameter>
</nodestore>
<sequencestore>
<reference store="nodestore" />
</sequencestore>
<securitystore>
<reference store="nodestore" />
</securitystore>
<lockstore>
<reference store="nodestore" />
</lockstore>
<revisiondescriptorsstore>
<reference store="nodestore" />
</revisiondescriptorsstore>
<revisiondescriptorstore>
<reference store="nodestore" />
</revisiondescriptorstore>
<contentstore classname="org.apache.slide.store.txfile.TxFileContentStore">
<parameter name="rootpath">C:/CCViews/slide/server/tools/webapps/slide/WEB-INF/st
ore/co
ntent</parameter>
<parameter
name="workpath">C:/CCViews/slide/server/tools/webapps/slide/WEB-INF/work/con
tent</parameter>
<!-- WB: Slide user list suggested disabling this for
filestore to avoid deadlock with high load -->
<parameter name="defer-saving">false</parameter>
<parameter name="timeout">120</parameter>
</contentstore>
<!-- uncomment if you want to use the sample Indexer -->
<!-- be sure to have Lucene in your classpath
-->
<!--
<contentindexer classname="org.apache.slide.index.SampleTxtContainsIndexer">
<parameter name="indexpath">./index</parameter>
</contentindexer>
-->
</store>
<scope match="/" store="tx"/>
<store name="tx2">
<nodestore classname="org.apache.slide.store.impl.rdbms.JDBCStore">
<parameter
name="adapter">org.apache.slide.store.impl.rdbms.DB2RDBMSAdapter</parameter>
<parameter name="driver">com.ibm.db2.jcc.DB2Driver</parameter>
<parameter name="url">jdbc:db2://machine:50000/DB2DB</parameter>
<parameter name="user">user</parameter>
<parameter name="password">pwd</parameter>
<parameter name="dbcpPooling">true</parameter>
<parameter name="maxPooledConnections">50</parameter>
<parameter name="isolation">READ_COMMITTED</parameter>
<parameter name="compress">false</parameter>
</nodestore>
<sequencestore>
<reference store="nodestore" />
</sequencestore>
<securitystore>
<reference store="nodestore" />
</securitystore>
<lockstore>
<reference store="nodestore" />
</lockstore>
<revisiondescriptorsstore>
<reference store="nodestore" />
</revisiondescriptorsstore>
<revisiondescriptorstore>
<reference store="nodestore" />
</revisiondescriptorstore>
<contentstore classname="org.apache.slide.store.txfile.TxFileContentStore">
<parameter name="rootpath">C:/CCViews/slide/server/tools/webapps/slide/WEB-INF/st
ore2/c
ontent</parameter>
<parameter
name="workpath">C:/CCViews/slide/server/tools/webapps/slide/WEB-INF/work2/co
ntent</parameter>
<!-- WB: Slide user list suggested disabling this for
filestore to avoid deadlock with high load -->
<parameter name="defer-saving">false</parameter>
<parameter name="timeout">120</parameter>
</contentstore>
<!-- uncomment if you want to use the sample Indexer -->
<!-- be sure to have Lucene in your classpath
-->
<!--
<contentindexer classname="org.apache.slide.index.SampleTxtContainsIndexer">
<parameter name="indexpath">./index</parameter>
</contentindexer>
-->
</store>
<scope match="/files_2" store="tx2"/>
<store name="tx3">
<nodestore classname="org.apache.slide.store.impl.rdbms.JDBCStore">
<parameter
name="adapter">org.apache.slide.store.impl.rdbms.DB2RDBMSAdapter</parameter>
<parameter name="driver">com.ibm.db2.jcc.DB2Driver</parameter>
<parameter name="url">jdbc:db2://machine:50000/DB2DB</parameter>
<parameter name="user">user</parameter>
<parameter name="password">pwd</parameter>
<parameter name="dbcpPooling">true</parameter>
<parameter name="maxPooledConnections">50</parameter>
<parameter name="isolation">READ_COMMITTED</parameter>
<parameter name="compress">false</parameter>
</nodestore>
<sequencestore>
<reference store="nodestore" />
</sequencestore>
<securitystore>
<reference store="nodestore" />
</securitystore>
<lockstore>
<reference store="nodestore" />
</lockstore>
<revisiondescriptorsstore>
<reference store="nodestore" />
</revisiondescriptorsstore>
<revisiondescriptorstore>
<reference store="nodestore" />
</revisiondescriptorstore>
<contentstore classname="org.apache.slide.store.txfile.TxFileContentStore">
<parameter name="rootpath">C:/CCViews/slide/server/tools/webapps/slide/WEB-INF/st
ore3/c
ontent</parameter>
<parameter
name="workpath">C:/CCViews/slide/server/tools/webapps/slide/WEB-INF/work3/co
ntent</parameter>
<!-- WB: Slide user list suggested disabling this for
filestore to avoid deadlock with high load -->
<parameter name="defer-saving">false</parameter>
<parameter name="timeout">120</parameter>
</contentstore>
<!-- uncomment if you want to use the sample Indexer -->
<!-- be sure to have Lucene in your classpath
-->
<!--
<contentindexer classname="org.apache.slide.index.SampleTxtContainsIndexer">
<parameter name="indexpath">./index</parameter>
</contentindexer>
-->
</store>
<scope match="/files_secondCollection" store="tx3"/>
</definition>
.
.
.
.
<objectnode classname="org.apache.slide.structure.SubjectNode" uri="/files">
<permission action="all" subject="unauthenticated" inheritable="true"/>
<permission action="/actions/write" subject="/roles/user" inheritable="true"/>
<permission action="/actions/read-acl" subject="owner" inheritable="true"/>
</objectnode>
<objectnode classname="org.apache.slide.structure.SubjectNode" uri="/files_2">
<permission action="all" subject="unauthenticated" inheritable="true"/>
<permission action="/actions/write" subject="/roles/user" inheritable="true"/>
<permission action="/actions/read-acl" subject="owner" inheritable="true"/>
</objectnode>
<objectnode classname="org.apache.slide.structure.SubjectNode"
uri="/files_secondCollection">
<permission action="all" subject="unauthenticated" inheritable="true"/>
<permission action="/actions/write" subject="/roles/user" inheritable="true"/>
<permission action="/actions/read-acl" subject="owner" inheritable="true"/>
</objectnode>
Thanks, Warwick
-----Original Message----- From: Oliver Zeigermann [mailto:[EMAIL PROTECTED] Sent: Tuesday, September 07, 2004 3:54 PM To: Slide Users Mailing List Subject: Re: DB2 server not responding after short time using Slide 2.1 be ta
Hi Warwick,
if you have set the sequential-mode to full you can be very sure only a
single request at a time can be executed. Thus it is very unlikely that it is a deadlock. I am afraid I can not check you configuration as I have no access to DB2. I can only recommend what most people do in such a scenario. Use a tool that displays all open connections and locks to find out what is going on. This is no fun, but the last resort, I guess. I know Toad does a pretty good job for Oracle and MySQL, do not know if there is anything like that for DB2.
Sorry that there is nothing more I can do to help you :(
Good luck,
Oliver
Warwick Burrows wrote:
Hi Oliver,
I'm having this same DB2 problem trying to get the testsuite slide
configuration going too. ie. by adding two more stores alongside the standard /files store: a /files_2 and a /files_secondCollection store as required by the testsuite. The DB2 adapter hangs in a different statement this time even though I do have the "sequential-mode" parameter set to "full".
I've attached the Domain.xml file if you have any suggestions for what
I'm doing wrong configuring these extra stores. My Domain.xml is not too far removed from the example Domain.xml of the 2.1 beta I've just substituted the XML nodestore in each <store> definition with a jdbcstore implementation instead. I reference the same jdbcstore in each <store> definition rather than separate ones. I've also defined the sequence store as a reference to the nodestore instead of using the FileSequenceStore in the beta Slide Domain.xml.
Thanks, Warwick
-----Original Message-----
From: Oliver Zeigermann [mailto:[EMAIL PROTECTED]
Sent: Monday, September 06, 2004 9:57 AM
To: Slide Users Mailing List
Subject: Re: DB2 server not responding after short time using Slide 2.1
beta
This can not be a deadlock as DB2 would resolve it automatically.
Maybe
there is another transaction running that holds locks on the concerned table. Maybe from the DB2 CLI? I'd suspect that...
And yes, actually if you switch on
<parameter name="sequential-mode">full</parameter>
in Domain.xml as done by default in Slide 2.1, Slide will never deadlock. However, if you reuse your old Domain.xml from earlier releases my patch won't have any effect.
Oliver
James Mason wrote:
Warwick,
This sounds suspiciously like a deadlock condition to me. I ran into
something similar with MySQL, and I *thought* that Oliver and I had made changes that would ensure it couldn't happen, but maybe not.
If possible can you get a log of all the sql statements executed by
Slide against the database? If your log includes a connection id look to see if the connection id suddenly changes. That should help you pinpoint the sql statement that's causing the problem .
From looking at enumerateLocks() I don't see any way that statement
could cause a deadlock. This makes me think the problem is probably somewhere else and it's just surfacing when that statement runs.
-James
Warwick Burrows wrote:
Hi,
I've run into a serious problem with the slide 2.1B1 server where the
DB2 server hangs executing a select statement in the enumerateLocks() method of the StandardRDBMSAdapter in the server. Once the DB server is hung it won't
even respond to simple select statements from the DB2 cli. Though it will
respond to "list tables" commands. When I run a select from the DB2 cli (eg.
select * from URI) and it hangs I can hit ctrl-C at the DB2 cli prompt and
it will cancel the request and return -- but no data comes back with it. Of
course the slide server will wait indefinitely for the sql request to come
back. Has anybody else had this problem with Slide 2.1B1 and DB2? A new DB2
RDBMS adapter was introduced in 2.1B1 as well as a new DB2 schema. I didn't
see this problem with 2.1M1 but its happening frequently with 2.1B1. In fact
its such a problem my project no longer works and we're grounded until
we
can find a fix.
Thanks, Warwick
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------- --
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
