Author: jbellis
Date: Thu Aug 18 19:38:40 2011
New Revision: 1159372
URL: http://svn.apache.org/viewvc?rev=1159372&view=rev
Log:
load access.properties for each request so you don't have to restart server to
see changes
patch by Thomas Peuss; reviewed by jbellis for CASSANDRA-3048
Modified:
cassandra/trunk/src/java/org/apache/cassandra/auth/SimpleAuthority.java
Modified:
cassandra/trunk/src/java/org/apache/cassandra/auth/SimpleAuthority.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/auth/SimpleAuthority.java?rev=1159372&r1=1159371&r2=1159372&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/auth/SimpleAuthority.java
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/auth/SimpleAuthority.java Thu
Aug 18 19:38:40 2011
@@ -21,20 +21,22 @@ package org.apache.cassandra.auth;
*/
+import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
+import java.io.InputStream;
import java.util.EnumSet;
import java.util.List;
import java.util.Properties;
import org.apache.cassandra.config.ConfigurationException;
+import org.apache.cassandra.io.util.FileUtils;
public class SimpleAuthority implements IAuthority
{
public final static String ACCESS_FILENAME_PROPERTY = "access.properties";
// magical property for WRITE permissions to the keyspaces list
public final static String KEYSPACES_WRITE_PROPERTY = "<modify-keyspaces>";
- private Properties accessProperties = null;
public EnumSet<Permission> authorize(AuthenticatedUser user, List<Object>
resource)
{
@@ -68,17 +70,13 @@ public class SimpleAuthority implements
}
String accessFilename = System.getProperty(ACCESS_FILENAME_PROPERTY);
+ InputStream in=null;
try
{
- // TODO: auto-reload when the file has been updated
- if (accessProperties == null) // Don't hit the disk on every
invocation
- {
- FileInputStream in = new FileInputStream(accessFilename);
- accessProperties = new Properties();
- accessProperties.load(in);
- in.close();
- }
-
+ in = new BufferedInputStream(new FileInputStream(accessFilename));
+ Properties accessProperties = new Properties();
+ accessProperties.load(in);
+
// Special case access to the keyspace list
if (keyspace == KEYSPACES_WRITE_PROPERTY)
{
@@ -138,6 +136,10 @@ public class SimpleAuthority implements
accessFilename,
e.getMessage()));
}
+ finally
+ {
+ FileUtils.closeQuietly(in);
+ }
return authorized;
}