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/store/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/store2/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/store3/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]
