Return-Path: Delivered-To: apmail-db-derby-dev-archive@www.apache.org Received: (qmail 65439 invoked from network); 30 Mar 2006 11:26:03 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 30 Mar 2006 11:26:03 -0000 Received: (qmail 33399 invoked by uid 500); 30 Mar 2006 11:26:02 -0000 Delivered-To: apmail-db-derby-dev-archive@db.apache.org Received: (qmail 33332 invoked by uid 500); 30 Mar 2006 11:26:01 -0000 Mailing-List: contact derby-dev-help@db.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: Delivered-To: mailing list derby-dev@db.apache.org Received: (qmail 33323 invoked by uid 99); 30 Mar 2006 11:26:01 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 30 Mar 2006 03:26:01 -0800 X-ASF-Spam-Status: No, hits=0.0 required=10.0 tests=UNPARSEABLE_RELAY X-Spam-Check-By: apache.org Received-SPF: pass (asf.osuosl.org: local policy) Received: from [192.18.98.31] (HELO brmea-mail-1.sun.com) (192.18.98.31) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 30 Mar 2006 03:26:00 -0800 Received: from phys-epost-1 ([129.159.136.14]) by brmea-mail-1.sun.com (8.12.10/8.12.9) with ESMTP id k2UBPbSF020102 for ; Thu, 30 Mar 2006 04:25:39 -0700 (MST) Received: from conversion-daemon.epost-mail1.sweden.sun.com by epost-mail1.sweden.sun.com (iPlanet Messaging Server 5.2 HotFix 1.24 (built Dec 19 2003)) id <0IWX00G01TTKEP@epost-mail1.sweden.sun.com> (original mail from Olav.Sandstaa@Sun.COM) for derby-dev@db.apache.org; Thu, 30 Mar 2006 13:25:39 +0200 (MEST) Received: from localhost (clustra.Norway.Sun.COM [129.159.119.10]) by epost-mail1.sweden.sun.com (iPlanet Messaging Server 5.2 HotFix 1.24 (built Dec 19 2003)) with ESMTP id <0IWX00JRYUEQYO@epost-mail1.sweden.sun.com> for derby-dev@db.apache.org; Thu, 30 Mar 2006 13:25:38 +0200 (MEST) Date: Thu, 30 Mar 2006 13:25:38 +0200 (MEST) From: Olav Sandstaa Subject: Re: How to start and stop Derby from within a test In-reply-to: <442AC82C.60705@sun.com> To: derby-dev@db.apache.org Message-id: <20060330.132538.85378203.Olav.Sandstaa@sun.com> MIME-version: 1.0 X-Mailer: Mew version 4.2 on Emacs 21.3.50 / Mule 5.0 (SAKAKI) Content-type: Text/Plain; charset=us-ascii Content-transfer-encoding: 7BIT References: <20060329.163324.22578441.Olav.Sandstaa@sun.com> <442AC82C.60705@sun.com> X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Rick Hillegas wrote: > Somewhere in the test output there should be a detailed stack trace for > this exception (you may have to run the test with verbose=true). That > stack trace will point you at a piece of code which may need to be > wrapped in a privileged block. You can grep the codeline for > "AccessController.doPrivileged" for example of how to code one of these. > You may also need to add some permissions to the policy file used by > derbyall tests: derby_tests.policy. Rick, thanks for the hints on how to get the stack trace for where the security exception occurs and hints on how to fix it. I still hope that I do not have to do changes related to the security manager and I am still hoping for some hints for functionality in the test framework or code other tests on how to start and stop Derby in a less ad hoc way than I am doing it in this test. Anyway, here is the stack trace for the security exception: java.sql.SQLException: Failed to start database 'wombat', see the next exception for details. at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(SQLExceptionFactory40.java:66) at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Util.java:87) at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Util.java:93) at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Util.java:172) at org.apache.derby.impl.jdbc.EmbedConnection.newSQLException(EmbedConnection.java:1939) at org.apache.derby.impl.jdbc.EmbedConnection.bootDatabase(EmbedConnection.java:1603) at org.apache.derby.impl.jdbc.EmbedConnection.(EmbedConnection.java:216) at org.apache.derby.impl.jdbc.EmbedConnection30.(EmbedConnection30.java:72) at org.apache.derby.impl.jdbc.EmbedConnection40.(EmbedConnection40.java:48) at org.apache.derby.jdbc.Driver40.getNewEmbedConnection(Driver40.java:62) at org.apache.derby.jdbc.InternalDriver.connect(InternalDriver.java:199) at org.apache.derby.impl.drda.Database.makeConnection(Database.java:231) at org.apache.derby.impl.drda.DRDAConnThread.getConnFromDatabaseName(DRDAConnThread.java:1147) at org.apache.derby.impl.drda.DRDAConnThread.verifyUserIdPassword(DRDAConnThread.java:1125) at org.apache.derby.impl.drda.DRDAConnThread.parseSECCHK(DRDAConnThread.java:2709) at org.apache.derby.impl.drda.DRDAConnThread.parseDRDAConnection(DRDAConnThread.java:987) at org.apache.derby.impl.drda.DRDAConnThread.processCommands(DRDAConnThread.java:830) at org.apache.derby.impl.drda.DRDAConnThread.run(DRDAConnThread.java:236) java.sql.SQLException: Java exception: 'access denied (java.io.FilePermission /export/home/tmp/derbyjdbc4/DerbyNetClient/TestConnectionMethods/wombat/log/logmirror.ctrl read): java.security.AccessControlException'. at java.security.AccessControlContext.checkPermission(AccessControlContext.java:321) at java.security.AccessController.checkPermission(AccessController.java:546) at java.lang.SecurityManager.checkPermission(SecurityManager.java:532) at java.lang.SecurityManager.checkRead(SecurityManager.java:871) at java.io.File.exists(File.java:731) at org.apache.derby.impl.store.raw.log.LogToFile.boot(LogToFile.java:2940) at org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java:1996) at org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java:290) at org.apache.derby.impl.services.monitor.BaseMonitor.startModule(BaseMonitor.java:542) at org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Monitor.java:418) at org.apache.derby.impl.store.raw.data.BaseDataFileFactory.bootLogFactory(BaseDataFileFactory.java:1762) at org.apache.derby.impl.store.raw.data.BaseDataFileFactory.setRawStoreFactory(BaseDataFileFactory.java:1218) at org.apache.derby.impl.store.raw.RawStore.boot(RawStore.java:250) at org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java:1996) at org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java:290) at org.apache.derby.impl.services.monitor.BaseMonitor.startModule(BaseMonitor.java:542) at org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Monitor.java:418) at org.apache.derby.impl.store.access.RAMAccessManager.boot(RAMAccessManager.java:987) at org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java:1996) at org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java:290) at org.apache.derby.impl.services.monitor.BaseMonitor.startModule(BaseMonitor.java:542) at org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Monitor.java:418) at org.apache.derby.impl.db.BasicDatabase.bootStore(BasicDatabase.java:738) at org.apache.derby.impl.db.BasicDatabase.boot(BasicDatabase.java:178) at org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java:1996) at org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java:290) at org.apache.derby.impl.services.monitor.BaseMonitor.bootService(BaseMonitor.java:1831) at org.apache.derby.impl.services.monitor.BaseMonitor.startProviderService(BaseMonitor.java:1697) at org.apache.derby.impl.services.monitor.BaseMonitor.findProviderAndStartService(BaseMonitor.java:1577) at org.apache.derby.impl.services.monitor.BaseMonitor.startPersistentService(BaseMonitor.java:990) at org.apache.derby.iapi.services.monitor.Monitor.startPersistentService(Monitor.java:541) at org.apache.derby.impl.jdbc.EmbedConnection.bootDatabase(EmbedConnection.java:1586) at org.apache.derby.impl.jdbc.EmbedConnection.(EmbedConnection.java:216) at org.apache.derby.impl.jdbc.EmbedConnection30.(EmbedConnection30.java:72) at org.apache.derby.impl.jdbc.EmbedConnection40.(EmbedConnection40.java:48) at org.apache.derby.jdbc.Driver40.getNewEmbedConnection(Driver40.java:62) at org.apache.derby.jdbc.InternalDriver.connect(InternalDriver.java:199) at org.apache.derby.impl.drda.Database.makeConnection(Database.java:231) at org.apache.derby.impl.drda.DRDAConnThread.getConnFromDatabaseName(DRDAConnThread.java:1147) at org.apache.derby.impl.drda.DRDAConnThread.verifyUserIdPassword(DRDAConnThread.java:1125) at org.apache.derby.impl.drda.DRDAConnThread.parseSECCHK(DRDAConnThread.java:2709) at org.apache.derby.impl.drda.DRDAConnThread.parseDRDAConnection(DRDAConnThread.java:987) at org.apache.derby.impl.drda.DRDAConnThread.processCommands(DRDAConnThread.java:830) at org.apache.derby.impl.drda.DRDAConnThread.run(DRDAConnThread.java:236) The security exception is raised when Derby tries to get access to the log/logmirror.ctrl file during the second startup of the database. I would have expected that since this file was created earlier during the initial startup of the test, the test should already have the required security permissions to access it during the second startup? Anyway, the best solution to this problem would be to be able to reuse functionality that already might exist in the test framework. Any suggestions are appreciated. Regards, Olav