You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by km...@apache.org on 2007/11/17 00:03:32 UTC
svn commit: r595861 - in /db/derby/code/trunk/java:
drda/org/apache/derby/impl/drda/NetworkServerControlImpl.java
engine/org/apache/derby/iapi/jdbc/DRDAServerStarter.java
engine/org/apache/derby/iapi/services/context/ContextService.java
Author: kmarsden
Date: Fri Nov 16 15:03:31 2007
New Revision: 595861
URL: http://svn.apache.org/viewvc?rev=595861&view=rev
Log:
DERBY-2654 calls to Thread.interrupt need privilege blocks
Changed calls to Thread.interrupt to occur in privilege blocks.
Modified:
db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/NetworkServerControlImpl.java
db/derby/code/trunk/java/engine/org/apache/derby/iapi/jdbc/DRDAServerStarter.java
db/derby/code/trunk/java/engine/org/apache/derby/iapi/services/context/ContextService.java
Modified: db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/NetworkServerControlImpl.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/NetworkServerControlImpl.java?rev=595861&r1=595860&r2=595861&view=diff
==============================================================================
--- db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/NetworkServerControlImpl.java (original)
+++ db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/NetworkServerControlImpl.java Fri Nov 16 15:03:31 2007
@@ -42,6 +42,7 @@
import java.net.UnknownHostException;
import java.nio.charset.Charset;
import java.security.AccessController;
+import java.security.PrivilegedAction;
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
import java.sql.Connection;
@@ -733,7 +734,7 @@
// We accept clients on a separate thread so we don't run into a problem
// blocking on the accept when trying to process a shutdown
- ClientThread clientThread =
+ final ClientThread clientThread =
(ClientThread) AccessController.doPrivileged(
new PrivilegedExceptionAction() {
public Object run() throws Exception
@@ -756,13 +757,21 @@
}
}
- // Need to interrupt the memcheck thread if it is sleeping.
- if (mc != null)
- mc.interrupt();
-
- //interrupt client thread
- clientThread.interrupt();
-
+
+ AccessController.doPrivileged(
+ new PrivilegedAction() {
+ public Object run() {
+ // Need to interrupt the memcheck thread if it is sleeping.
+ if (mc != null)
+ mc.interrupt();
+
+ //interrupt client thread
+ clientThread.interrupt();
+
+ return null;
+ }
+ });
+
// Close out the sessions
synchronized(sessionTable) {
for (Enumeration e = sessionTable.elements(); e.hasMoreElements(); )
@@ -777,8 +786,16 @@
//interupt any connection threads still active
for (int i = 0; i < threadList.size(); i++)
{
- ((DRDAConnThread)threadList.get(i)).close();
- ((DRDAConnThread)threadList.get(i)).interrupt();
+ final DRDAConnThread threadi = (DRDAConnThread)threadList.get(i);
+
+ threadi.close();
+ AccessController.doPrivileged(
+ new PrivilegedAction() {
+ public Object run() {
+ threadi.interrupt();
+ return null;
+ }
+ });
}
threadList.clear();
}
Modified: db/derby/code/trunk/java/engine/org/apache/derby/iapi/jdbc/DRDAServerStarter.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/iapi/jdbc/DRDAServerStarter.java?rev=595861&r1=595860&r2=595861&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/iapi/jdbc/DRDAServerStarter.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/iapi/jdbc/DRDAServerStarter.java Fri Nov 16 15:03:31 2007
@@ -34,6 +34,7 @@
import java.lang.reflect.InvocationTargetException;
import java.net.InetAddress;
import java.security.AccessController;
+import java.security.PrivilegedAction;
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
@@ -231,7 +232,13 @@
{
serverShutdownMethod.invoke( server,
null);
- serverThread.interrupt();
+ AccessController.doPrivileged(
+ new PrivilegedAction() {
+ public Object run() {
+ serverThread.interrupt();
+ return null;
+ }
+ });
serverThread = null;
}
Modified: db/derby/code/trunk/java/engine/org/apache/derby/iapi/services/context/ContextService.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/iapi/services/context/ContextService.java?rev=595861&r1=595860&r2=595861&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/iapi/services/context/ContextService.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/iapi/services/context/ContextService.java Fri Nov 16 15:03:31 2007
@@ -25,6 +25,8 @@
import org.apache.derby.iapi.services.sanity.SanityManager;
import org.apache.derby.iapi.services.stream.HeaderPrintWriter;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
import java.util.Hashtable;
import java.util.Enumeration;
@@ -556,8 +558,17 @@
if (active == null)
continue;
+ final Thread fActive = active;
if (cm.setInterrupted(c))
- active.interrupt();
+ {
+ AccessController.doPrivileged(
+ new PrivilegedAction() {
+ public Object run() {
+ fActive.interrupt();
+ return null;
+ }
+ });
+ }
}
}
}