You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by ma...@apache.org on 2015/01/15 05:37:50 UTC
incubator-ranger git commit: RANGER-203: 1) policy-refresher unit
test updated to reduce the time taken to complete. 2) Removed unused code
(Hdfs audit log classes) from ranger-plugin-common project. 3) Updated
ServiceFileStore to dynamically read servic
Repository: incubator-ranger
Updated Branches:
refs/heads/stack 81cfaef6d -> fbe800a16
RANGER-203: 1) policy-refresher unit test updated to reduce the time
taken to complete. 2) Removed unused code (Hdfs audit log classes) from
ranger-plugin-common project. 3) Updated ServiceFileStore to dynamically
read service-def from filesystem, instead of using cached service-defs.
4) Fixed incorrect log level in RangerDaoManager.java
Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/fbe800a1
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/fbe800a1
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/fbe800a1
Branch: refs/heads/stack
Commit: fbe800a16d9df250a11dfbb4459d22aa865db14e
Parents: 81cfaef
Author: Madhan Neethiraj <ma...@apache.org>
Authored: Wed Jan 14 20:35:27 2015 -0800
Committer: Madhan Neethiraj <ma...@apache.org>
Committed: Wed Jan 14 20:35:27 2015 -0800
----------------------------------------------------------------------
.../java/org/apache/log4j/BufferedAppender.java | 123 ----
.../org/apache/log4j/HdfsLogDestination.java | 297 ----------
.../apache/log4j/HdfsRollingFileAppender.java | 130 ----
.../org/apache/log4j/LocalFileLogBuffer.java | 594 -------------------
.../main/java/org/apache/log4j/LogBuffer.java | 30 -
.../java/org/apache/log4j/LogDestination.java | 30 -
.../ranger/plugin/store/ServiceStore.java | 1 -
.../plugin/store/file/ServiceFileStore.java | 170 ++----
.../ranger/plugin/util/PolicyRefresher.java | 14 +
.../ranger/plugin/store/TestServiceStore.java | 24 +-
.../ranger/plugin/util/TestPolicyRefresher.java | 19 +-
.../org/apache/ranger/db/RangerDaoManager.java | 5 +-
12 files changed, 105 insertions(+), 1332 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/fbe800a1/agents-common/src/main/java/org/apache/log4j/BufferedAppender.java
----------------------------------------------------------------------
diff --git a/agents-common/src/main/java/org/apache/log4j/BufferedAppender.java b/agents-common/src/main/java/org/apache/log4j/BufferedAppender.java
deleted file mode 100644
index 916d2eb..0000000
--- a/agents-common/src/main/java/org/apache/log4j/BufferedAppender.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.log4j;
-
-
-import org.apache.log4j.helpers.LogLog;
-
-public abstract class BufferedAppender<T> extends AppenderSkeleton {
- private LogDestination<T> mLogDestination = null;
- private LogBuffer<T> mLogBuffer = null;
-
- protected void setBufferAndDestination(LogBuffer<T> buffer, LogDestination<T> destination) {
- close();
-
- mLogBuffer = buffer;
- mLogDestination = destination;
- }
-
- protected boolean isLogable() {
- return mLogBuffer != null;
- }
-
- protected void addToBuffer(T log) {
- if(mLogBuffer != null) {
- mLogBuffer.add(log);
- }
- }
-
- protected void start() {
- LogLog.debug("==> BufferedAppender.start()");
-
- if(mLogBuffer == null) {
- LogLog.warn("BufferedAppender.start(): logBuffer is null");
- }
-
- if(mLogDestination == null) {
- LogLog.warn("BufferedAppender.start(): logDestination is null");
- }
-
- if(mLogBuffer != null && mLogDestination != null) {
- JVMShutdownHook jvmShutdownHook = new JVMShutdownHook(this);
-
- Runtime.getRuntime().addShutdownHook(jvmShutdownHook);
-
- mLogBuffer.start(mLogDestination);
- }
-
- LogLog.debug("<== BufferedAppender.start()");
- }
-
- protected void stop() {
- LogLog.debug("==> BufferedAppender.stop()");
-
- LogBuffer<T> tmpBuff = mLogBuffer;
-
- mLogDestination = null;
- mLogBuffer = null;
-
- if(tmpBuff != null) {
- tmpBuff.stop();
- }
-
- LogLog.debug("<== BufferedAppender.stop()");
- }
-
- @Override
- public void close() {
- LogLog.debug("==> BufferedAppender.close()");
-
- stop();
-
- LogLog.debug("<== BufferedAppender.close()");
- }
-
- @Override
- public String toString() {
- StringBuilder sb = new StringBuilder();
-
- sb.append("BufferedAppender {");
- if(mLogDestination != null) {
- sb.append(mLogDestination.toString());
- }
-
- sb.append(" ");
-
- if(mLogBuffer != null) {
- sb.append(mLogBuffer.toString());
- }
- sb.append("}");
-
- return sb.toString();
- }
-
- private class JVMShutdownHook extends Thread {
- Appender mAppender = null;
-
- public JVMShutdownHook(Appender appender) {
- mAppender = appender;
- }
-
- public void run() {
- if(mAppender != null) {
- mAppender.close();
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/fbe800a1/agents-common/src/main/java/org/apache/log4j/HdfsLogDestination.java
----------------------------------------------------------------------
diff --git a/agents-common/src/main/java/org/apache/log4j/HdfsLogDestination.java b/agents-common/src/main/java/org/apache/log4j/HdfsLogDestination.java
deleted file mode 100644
index 27def91..0000000
--- a/agents-common/src/main/java/org/apache/log4j/HdfsLogDestination.java
+++ /dev/null
@@ -1,297 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.log4j;
-
-
-import java.io.File;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.UnsupportedEncodingException;
-import java.net.URI;
-
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.FSDataOutputStream;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.log4j.LocalFileLogBuffer.MiscUtil;
-import org.apache.log4j.helpers.LogLog;
-
-public class HdfsLogDestination implements LogDestination<String> {
- private String mDirectory = null;
- private String mFile = null;
- private String mEncoding = null;
- private boolean mIsAppend = true;
- private int mRolloverIntervalSeconds = 24 * 60 * 60;
-
- private OutputStreamWriter mWriter = null;
- private String mCurrentFilename = null;
- private long mNextRolloverTime = 0;
-
- private String LINE_SEPARATOR = System.getProperty("line.separator");
-
- public HdfsLogDestination() {
- }
-
- public String getDirectory() {
- return mDirectory;
- }
-
- public void setDirectory(String directory) {
- this.mDirectory = directory;
- }
-
- public String getFile() {
- return mFile;
- }
-
- public void setFile(String file) {
- this.mFile = file;
- }
-
- public String getEncoding() {
- return mEncoding;
- }
-
- public void setEncoding(String encoding) {
- mEncoding = encoding;
- }
-
- public int getRolloverIntervalSeconds() {
- return mRolloverIntervalSeconds;
- }
-
- public void setRolloverIntervalSeconds(int rolloverIntervalSeconds) {
- this.mRolloverIntervalSeconds = rolloverIntervalSeconds;
- }
-
- @Override
- public void start() {
- LogLog.debug("==> HdfsLogDestination.start()");
-
- openFile();
-
- LogLog.debug("<== HdfsLogDestination.start()");
- }
-
- @Override
- public void stop() {
- LogLog.debug("==> HdfsLogDestination.stop()");
-
- closeFile();
-
- LogLog.debug("<== HdfsLogDestination.stop()");
- }
-
- @Override
- public boolean isAvailable() {
- return mWriter != null;
- }
-
- @Override
- public boolean add(String log) {
- boolean ret = false;
-
- long now = System.currentTimeMillis();
-
- if(now > mNextRolloverTime) {
- rollover();
- }
-
- OutputStreamWriter writer = mWriter;
-
- if(writer != null) {
- try {
- writer.write(log + LINE_SEPARATOR);
-
- ret = true;
- } catch (IOException excp) {
- LogLog.warn("HdfsLogDestination.add(): write failed", excp);
- }
- }
-
- return ret;
- }
-
- private void openFile() {
- LogLog.debug("==> HdfsLogDestination.openFile()");
-
- closeFile();
-
- mCurrentFilename = MiscUtil.replaceTokens(mDirectory + File.separator + mFile);
-
- FSDataOutputStream ostream = null;
- FileSystem fileSystem = null;
- Path pathLogfile = null;
- Configuration conf = null;
-
- try {
- LogLog.debug("HdfsLogDestination.openFile(): opening file " + mCurrentFilename);
-
- URI uri = URI.create(mCurrentFilename);
-
- // TODO: mechanism to notify co-located XA-HDFS plugin to disable auditing of access checks to the current HDFS file
- // this can be driven by adding an option (property) the logger, which can be configured at the deployment time.
- // Like: hdfsCurrentFilenameProperty. When this option is set, do the following here:
- // System.setProperty(hdfsCurrentFilenameProperty, uri.getPath());
-
- conf = new Configuration();
- pathLogfile = new Path(mCurrentFilename);
- fileSystem = FileSystem.get(uri, conf);
-
- if(fileSystem.exists(pathLogfile)) {
- if(mIsAppend) {
- try {
- ostream = fileSystem.append(pathLogfile);
- } catch(IOException excp) {
- // append may not be supported by the filesystem. rename existing file and create a new one
- String fileSuffix = MiscUtil.replaceTokens("-" + MiscUtil.TOKEN_FILE_OPEN_TIME_START + "yyyyMMdd-HHmm.ss" + MiscUtil.TOKEN_FILE_OPEN_TIME_END);
- String movedFilename = appendToFilename(mCurrentFilename, fileSuffix);
- Path movedFilePath = new Path(movedFilename);
-
- fileSystem.rename(pathLogfile, movedFilePath);
- }
- }
- }
-
- if(ostream == null){
- ostream = fileSystem.create(pathLogfile);
- }
- } catch(IOException ex) {
- Path parentPath = pathLogfile.getParent();
-
- try {
- if(parentPath != null&& fileSystem != null && !fileSystem.exists(parentPath) && fileSystem.mkdirs(parentPath)) {
- ostream = fileSystem.create(pathLogfile);
- }
- } catch (IOException e) {
- LogLog.warn("HdfsLogDestination.openFile() failed", e);
- } catch (Throwable e) {
- LogLog.warn("HdfsLogDestination.openFile() failed", e);
- }
- } catch(Throwable ex) {
- LogLog.warn("HdfsLogDestination.openFile() failed", ex);
- } finally {
- // TODO: unset the property set above to exclude auditing of logfile opening
- // System.setProperty(hdfsCurrentFilenameProperty, null);
- }
-
- mWriter = createWriter(ostream);
-
- if(mWriter != null) {
- LogLog.debug("HdfsLogDestination.openFile(): opened file " + mCurrentFilename);
-
- updateNextRolloverTime();
- } else {
- LogLog.warn("HdfsLogDestination.openFile(): failed to open file for write " + mCurrentFilename);
-
- mCurrentFilename = null;
- }
-
- LogLog.debug("<== HdfsLogDestination.openFile(" + mCurrentFilename + ")");
- }
-
- private void closeFile() {
- LogLog.debug("==> HdfsLogDestination.closeFile()");
-
- OutputStreamWriter writer = mWriter;
-
- mWriter = null;
-
- if(writer != null) {
- try {
- writer.flush();
- writer.close();
- } catch(IOException excp) {
- LogLog.warn("HdfsLogDestination: failed to close file " + mCurrentFilename, excp);
- }
- }
-
- LogLog.debug("<== HdfsLogDestination.closeFile()");
- }
-
- private void rollover() {
- LogLog.debug("==> HdfsLogDestination.rollover()");
-
- closeFile();
-
- openFile();
-
- LogLog.debug("<== HdfsLogDestination.rollover()");
- }
-
- private OutputStreamWriter createWriter(OutputStream os ) {
- OutputStreamWriter writer = null;
-
- if(os != null) {
- if(mEncoding != null) {
- try {
- writer = new OutputStreamWriter(os, mEncoding);
- } catch(UnsupportedEncodingException excp) {
- LogLog.warn("LocalFileLogBuffer: failed to create output writer.", excp);
- }
- }
-
- if(writer == null) {
- writer = new OutputStreamWriter(os);
- }
- }
-
- return writer;
- }
-
- private void updateNextRolloverTime() {
- mNextRolloverTime = MiscUtil.getNextRolloverTime(mNextRolloverTime, (mRolloverIntervalSeconds * 1000));
- }
-
- private String appendToFilename(String fileName, String strToAppend) {
- String ret = fileName;
-
- if(strToAppend != null) {
- if(ret == null) {
- ret = "";
- }
-
- int extnPos = ret.lastIndexOf(".");
-
- if(extnPos < 0) {
- ret += strToAppend;
- } else {
- String extn = ret.substring(extnPos);
-
- ret = ret.substring(0, extnPos) + strToAppend + extn;
- }
- }
-
- return ret;
- }
-
- @Override
- public String toString() {
- StringBuilder sb = new StringBuilder();
-
- sb.append("HdfsLogDestination {");
- sb.append("Directory=").append(mDirectory).append("; ");
- sb.append("File=").append(mFile).append("; ");
- sb.append("RolloverIntervalSeconds=").append(mRolloverIntervalSeconds);
- sb.append("}");
-
- return sb.toString();
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/fbe800a1/agents-common/src/main/java/org/apache/log4j/HdfsRollingFileAppender.java
----------------------------------------------------------------------
diff --git a/agents-common/src/main/java/org/apache/log4j/HdfsRollingFileAppender.java b/agents-common/src/main/java/org/apache/log4j/HdfsRollingFileAppender.java
deleted file mode 100644
index a855575..0000000
--- a/agents-common/src/main/java/org/apache/log4j/HdfsRollingFileAppender.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.log4j;
-
-
-import org.apache.log4j.helpers.LogLog;
-import org.apache.log4j.spi.LoggingEvent;
-
-
-public class HdfsRollingFileAppender extends BufferedAppender<String> {
- String mEncoding = null;
-
- String mHdfsDestinationDirectory = null;
- String mHdfsDestinationFile = null;
- int mHdfsDestinationRolloverIntervalSeconds = 24 * 60 * 60;
-
- String mLocalFileBufferDirectory = null;
- String mLocalFileBufferFile = null;
- int mLocalFileBufferRolloverIntervalSeconds = 10 * 60;
- String mLocalFileBufferArchiveDirectory = null;
- int mLocalFileBufferArchiveFileCount = 10;
-
- public void setEncoding(String encoding) {
- mEncoding = encoding;
- }
-
- public void setHdfsDestinationDirectory(String hdfsDestinationDirectory) {
- mHdfsDestinationDirectory = hdfsDestinationDirectory;
- }
-
- public void setHdfsDestinationFile(String hdfsDestinationFile) {
- mHdfsDestinationFile = hdfsDestinationFile;
- }
-
- public void setHdfsDestinationRolloverIntervalSeconds(int hdfsDestinationRolloverIntervalSeconds) {
- mHdfsDestinationRolloverIntervalSeconds = hdfsDestinationRolloverIntervalSeconds;
- }
-
- public void setLocalFileBufferDirectory(String localFileBufferDirectory) {
- mLocalFileBufferDirectory = localFileBufferDirectory;
- }
-
- public void setLocalFileBufferFile(String localFileBufferFile) {
- mLocalFileBufferFile = localFileBufferFile;
- }
-
- public void setLocalFileBufferRolloverIntervalSeconds(int localFileBufferRolloverIntervalSeconds) {
- mLocalFileBufferRolloverIntervalSeconds = localFileBufferRolloverIntervalSeconds;
- }
-
- public void setLocalFileBufferArchiveDirectory(String localFileBufferArchiveDirectory) {
- mLocalFileBufferArchiveDirectory = localFileBufferArchiveDirectory;
- }
-
- public void setLocalFileBufferArchiveFileCount(int localFileBufferArchiveFileCount) {
- mLocalFileBufferArchiveFileCount = localFileBufferArchiveFileCount;
- }
-
- @Override
- public boolean requiresLayout() {
- return true;
- }
-
- @Override
- public void activateOptions() {
- LogLog.debug("==> HdfsRollingFileAppender.activateOptions()");
-
- HdfsLogDestination hdfsDestination = new HdfsLogDestination();
-
- hdfsDestination.setDirectory(mHdfsDestinationDirectory);
- hdfsDestination.setFile(mHdfsDestinationFile);
- hdfsDestination.setEncoding(mEncoding);
- hdfsDestination.setRolloverIntervalSeconds(mHdfsDestinationRolloverIntervalSeconds);
-
- LocalFileLogBuffer localFileBuffer = new LocalFileLogBuffer();
-
- localFileBuffer.setDirectory(mLocalFileBufferDirectory);
- localFileBuffer.setFile(mLocalFileBufferFile);
- localFileBuffer.setEncoding(mEncoding);
- localFileBuffer.setRolloverIntervalSeconds(mLocalFileBufferRolloverIntervalSeconds);
- localFileBuffer.setArchiveDirectory(mLocalFileBufferArchiveDirectory);
- localFileBuffer.setArchiveFileCount(mLocalFileBufferArchiveFileCount);
-
- setBufferAndDestination(localFileBuffer, hdfsDestination);
-
- start();
-
- LogLog.debug("<== HdfsRollingFileAppender.activateOptions()");
- }
-
- @Override
- protected void append(LoggingEvent event) {
- if(isLogable()) {
- String logMsg = this.layout.format(event);
-
- if(layout.ignoresThrowable()) {
- String[] strThrowable = event.getThrowableStrRep();
- if (strThrowable != null) {
- StringBuilder sb = new StringBuilder();
-
- sb.append(logMsg);
-
- for(String s : strThrowable) {
- sb.append(s).append(Layout.LINE_SEP);
- }
-
- logMsg = sb.toString();
- }
- }
-
- addToBuffer(logMsg);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/fbe800a1/agents-common/src/main/java/org/apache/log4j/LocalFileLogBuffer.java
----------------------------------------------------------------------
diff --git a/agents-common/src/main/java/org/apache/log4j/LocalFileLogBuffer.java b/agents-common/src/main/java/org/apache/log4j/LocalFileLogBuffer.java
deleted file mode 100644
index f1b8716..0000000
--- a/agents-common/src/main/java/org/apache/log4j/LocalFileLogBuffer.java
+++ /dev/null
@@ -1,594 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.log4j;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.UnsupportedEncodingException;
-import java.io.Writer;
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.rmi.dgc.VMID;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.TreeSet;
-
-import org.apache.log4j.LocalFileLogBuffer.MiscUtil;
-import org.apache.log4j.helpers.LogLog;
-
-
-public class LocalFileLogBuffer implements LogBuffer<String> {
- private static final int DEFAULT_ROLLOVER_INTERVAL = 600;
-
- private String mDirectory = null;
- private String mFile = null;
- private String mEncoding = null;
- private boolean mIsAppend = true;
- private int mRolloverIntervalSeconds = DEFAULT_ROLLOVER_INTERVAL;
- private String mArchiveDirectory = null;
- private int mArchiveFileCount = 10;
-
- private Writer mWriter = null;
- private String mCurrentFilename = null;
- private long mNextRolloverTime = 0;
-
- private DestinationDispatcherThread mDispatcherThread = null;
-
- public String getDirectory() {
- return mDirectory;
- }
-
- public void setDirectory(String directory) {
- mDirectory = directory;
- }
-
- public String getFile() {
- return mFile;
- }
-
- public void setFile(String file) {
- mFile = file;
- }
-
- public String getEncoding() {
- return mEncoding;
- }
-
- public void setEncoding(String encoding) {
- mEncoding = encoding;
- }
-
- public boolean getIsAppend() {
- return mIsAppend;
- }
-
- public void setIsAppend(boolean isAppend) {
- mIsAppend = isAppend;
- }
-
- public int getRolloverIntervalSeconds() {
- return mRolloverIntervalSeconds;
- }
-
- public void setRolloverIntervalSeconds(int rolloverIntervalSeconds) {
- mRolloverIntervalSeconds = rolloverIntervalSeconds;
- }
-
- public String getArchiveDirectory() {
- return mArchiveDirectory;
- }
-
- public void setArchiveDirectory(String archiveDirectory) {
- mArchiveDirectory = archiveDirectory;
- }
-
- public int getArchiveFileCount() {
- return mArchiveFileCount;
- }
-
- public void setArchiveFileCount(int archiveFileCount) {
- mArchiveFileCount = archiveFileCount;
- }
-
-
- @Override
- public void start(LogDestination<String> destination) {
- LogLog.debug("==> LocalFileLogBuffer.start()");
-
- openFile();
-
- mDispatcherThread = new DestinationDispatcherThread(this, destination);
-
- mDispatcherThread.start();
-
- LogLog.debug("<== LocalFileLogBuffer.start()");
- }
-
- @Override
- public void stop() {
- LogLog.debug("==> LocalFileLogBuffer.stop()");
-
- DestinationDispatcherThread dispatcherThread = mDispatcherThread;
- mDispatcherThread = null;
-
- if(dispatcherThread != null && dispatcherThread.isAlive()) {
- dispatcherThread.stopThread();
-
- try {
- dispatcherThread.join();
- } catch (InterruptedException e) {
- LogLog.warn("LocalFileLogBuffer.stop(): failed in waiting for DispatcherThread", e);
- }
- }
-
- closeFile();
-
- LogLog.debug("<== LocalFileLogBuffer.stop()");
- }
-
- @Override
- public boolean isAvailable() {
- return mWriter != null;
- }
-
- @Override
- public boolean add(String log) {
- boolean ret = false;
-
- long now = System.currentTimeMillis();
-
- if(now > mNextRolloverTime) {
- rollover();
- }
-
- Writer writer = mWriter;
-
- if(writer != null) {
- try {
- writer.write(log);
-
- ret = true;
- } catch(IOException excp) {
- LogLog.warn("LocalFileLogBuffer.add(): write failed", excp);
- }
- } else {
- LogLog.warn("LocalFileLogBuffer.add(): writer is null");
- }
-
- return ret;
- }
-
- private void openFile() {
- LogLog.debug("==> LocalFileLogBuffer.openFile()");
-
- closeFile();
-
- mCurrentFilename = MiscUtil.replaceTokens(mDirectory + File.separator + mFile);
-
- FileOutputStream ostream = null;
- try {
- ostream = new FileOutputStream(mCurrentFilename, mIsAppend);
- } catch(Exception excp) {
- MiscUtil.createParents(new File(mCurrentFilename));
-
- try {
- ostream = new FileOutputStream(mCurrentFilename, mIsAppend);
- } catch(Exception ex) {
- // ignore; error printed down
- }
- }
-
- mWriter = createWriter(ostream);
-
- if(mWriter != null) {
- LogLog.debug("LocalFileLogBuffer.openFile(): opened file " + mCurrentFilename);
-
- updateNextRolloverTime();
- } else {
- LogLog.warn("LocalFileLogBuffer.openFile(): failed to open file for write " + mCurrentFilename);
-
- mCurrentFilename = null;
- }
-
- LogLog.debug("<== LocalFileLogBuffer.openFile()");
- }
-
- private void closeFile() {
- LogLog.debug("==> LocalFileLogBuffer.closeFile()");
-
- Writer writer = mWriter;
-
- mWriter = null;
-
- if(writer != null) {
- try {
- writer.flush();
- writer.close();
- } catch(IOException excp) {
- LogLog.warn("LocalFileLogBuffer: failed to close file " + mCurrentFilename, excp);
- }
-
- if(mDispatcherThread != null) {
- mDispatcherThread.addLogfile(mCurrentFilename);
- }
- }
-
- LogLog.debug("<== LocalFileLogBuffer.closeFile()");
- }
-
- private void rollover() {
- LogLog.debug("==> LocalFileLogBuffer.rollover()");
-
- closeFile();
-
- openFile();
-
- LogLog.debug("<== LocalFileLogBuffer.rollover()");
- }
-
- public OutputStreamWriter createWriter(OutputStream os ) {
- OutputStreamWriter writer = null;
-
- if(os != null) {
- if(mEncoding != null) {
- try {
- writer = new OutputStreamWriter(os, mEncoding);
- } catch(UnsupportedEncodingException excp) {
- LogLog.warn("LocalFileLogBuffer: failed to create output writer.", excp);
- }
- }
-
- if(writer == null) {
- writer = new OutputStreamWriter(os);
- }
- }
-
- return writer;
- }
-
- private void updateNextRolloverTime() {
- mNextRolloverTime = MiscUtil.getNextRolloverTime(mNextRolloverTime, (mRolloverIntervalSeconds * 1000));
- }
-
- boolean isCurrentFilename(String filename) {
- return mCurrentFilename != null && filename != null && filename.equals(mCurrentFilename);
- }
-
- @Override
- public String toString() {
- StringBuilder sb = new StringBuilder();
-
- sb.append("LocalFileLogBuffer {");
- sb.append("Directory=").append(mDirectory).append("; ");
- sb.append("File=").append(mFile).append("; ");
- sb.append("RolloverIntervaSeconds=").append(mRolloverIntervalSeconds).append("; ");
- sb.append("ArchiveDirectory=").append(mArchiveDirectory).append("; ");
- sb.append("ArchiveFileCount=").append(mArchiveFileCount);
- sb.append("}");
-
- return sb.toString();
- }
-
- static class MiscUtil {
- static String TOKEN_HOSTNAME = "%hostname%";
- static String TOKEN_APP_INSTANCE = "%app-instance%";
- static String TOKEN_FILE_OPEN_TIME_START = "%file-open-time:";
- static String TOKEN_FILE_OPEN_TIME_END = "%";
-
- static VMID sJvmID = new VMID();
-
- public static String replaceTokens(String str) {
- if(str == null) {
- return str;
- }
-
- str = replaceHostname(str);
- str = replaceAppInstance(str);
- str = replaceFileOpenTime(str);
-
- return str;
- }
-
- public static String replaceHostname(String str) {
- if(!str.contains(TOKEN_HOSTNAME)) {
- return str;
- }
-
- String hostName = null;
-
- try {
- hostName = InetAddress.getLocalHost().getHostName();
- } catch (UnknownHostException excp) {
- LogLog.warn("LocalFileLogBuffer", excp);
- }
-
- if(hostName == null) {
- hostName = "Unknown";
- }
-
- return str.replaceAll(TOKEN_HOSTNAME, hostName);
- }
-
- public static String replaceAppInstance(String str) {
- if(!str.contains(TOKEN_APP_INSTANCE)) {
- return str;
- }
-
- String appInstance = Integer.toString(Math.abs(sJvmID.hashCode()));
-
- return str.replaceAll(TOKEN_APP_INSTANCE, appInstance);
- }
-
- public static String replaceFileOpenTime(String str) {
- Date now = new Date();
-
- while(str.contains(TOKEN_FILE_OPEN_TIME_START)) {
- int tagStartPos = str.indexOf(TOKEN_FILE_OPEN_TIME_START);
- int tagEndPos = str.indexOf(TOKEN_FILE_OPEN_TIME_END, tagStartPos + TOKEN_FILE_OPEN_TIME_START.length());
-
- if(tagEndPos <= tagStartPos) {
- break;
- }
-
- String tag = str.substring(tagStartPos, tagEndPos+1);
- String dtFormat = tag.substring(TOKEN_FILE_OPEN_TIME_START.length(), tag.lastIndexOf(TOKEN_FILE_OPEN_TIME_END));
-
- String replaceStr = "";
-
- if(dtFormat != null) {
- SimpleDateFormat sdf = new SimpleDateFormat(dtFormat);
-
- replaceStr = sdf.format(now);
- }
-
- str = str.replaceAll(tag, replaceStr);
- }
-
- return str;
- }
-
- public static void createParents(File file) {
- if(file != null) {
- String parentName = file.getParent();
-
- if (parentName != null) {
- File parentDir = new File(parentName);
-
- if(!parentDir.exists()) {
- if (!parentDir.mkdirs()) {
- LogLog.warn("Creation of directory [" + parentName + "] failed!");
- }
- }
- }
- }
- }
-
- public static long getNextRolloverTime(long lastRolloverTime, long interval) {
- long now = System.currentTimeMillis() / 1000 * 1000; // round to second
-
- if(lastRolloverTime <= 0) {
- // should this be set to the next multiple-of-the-interval from start of the day?
- return now + interval;
- } else if(lastRolloverTime <= now) {
- long nextRolloverTime = now + interval;
-
- // keep it at 'interval' boundary
- long trimInterval = (nextRolloverTime - lastRolloverTime) % interval;
-
- return nextRolloverTime - trimInterval;
- } else {
- return lastRolloverTime;
- }
- }
- }
-}
-
-class DestinationDispatcherThread extends Thread {
- private TreeSet<String> mCompletedLogfiles = new TreeSet<String>();
- private boolean mStopThread = false;
- private LocalFileLogBuffer mFileLogBuffer = null;
- private LogDestination<String> mDestination = null;
-
- private String mCurrentLogfile = null;
- private BufferedReader mReader = null;
-
- public DestinationDispatcherThread(LocalFileLogBuffer fileLogBuffer, LogDestination<String> destination) {
- super(DestinationDispatcherThread.class.getSimpleName());
-
- mFileLogBuffer = fileLogBuffer;
- mDestination = destination;
-
- setDaemon(true);
- }
-
- public void addLogfile(String filename) {
- LogLog.debug("==> DestinationDispatcherThread.addLogfile(" + filename + ")");
-
- synchronized(mCompletedLogfiles) {
- mCompletedLogfiles.add(filename);
- mCompletedLogfiles.notify();
- }
-
- LogLog.debug("<== DestinationDispatcherThread.addLogfile(" + filename + ")");
- }
-
- public String getNextLogfile() {
- synchronized(mCompletedLogfiles) {
- return mCompletedLogfiles.pollFirst();
- }
- }
-
- public void stopThread() {
- mStopThread = true;
- }
-
- @Override
- public void run() {
- init();
-
- // destination start() should be from the dispatcher thread
- mDestination.start();
-
- int pollIntervalInMs = 1000;
-
- while(! mStopThread) {
- String logMsg = getNextLog();
-
- if(logMsg == null) { // move to the next file
- synchronized(mCompletedLogfiles) {
- while(mCompletedLogfiles.isEmpty() && !mStopThread) {
- try {
- mCompletedLogfiles.wait(pollIntervalInMs);
- } catch(InterruptedException excp) {
- LogLog.warn("LocalFileLogBuffer.run(): failed to wait for log file", excp);
- }
- }
-
- if(!mCompletedLogfiles.isEmpty()) {
- openNextFile();
- }
- }
- } else { // deliver to the msg to destination
- while(! mDestination.add(logMsg) && !mStopThread) {
- try {
- Thread.sleep(pollIntervalInMs);
- } catch(InterruptedException excp) {
- LogLog.warn("LocalFileLogBuffer.run(): failed to wait for destination to be available", excp);
- }
- }
- }
- }
-
- mDestination.stop();
- }
-
- private void init() {
- LogLog.debug("==> DestinationDispatcherThread.init()");
-
- String dirName = MiscUtil.replaceTokens(mFileLogBuffer.getDirectory());
- File directory = new File(dirName);
-
- if(directory.exists() && directory.isDirectory()) {
- File[] files = directory.listFiles();
-
- if(files != null) {
- for(File file : files) {
- if(file.exists() && file.canRead()) {
- String filename = file.getAbsolutePath();
- if(! mFileLogBuffer.isCurrentFilename(filename)) {
- addLogfile(filename);
- }
- }
- }
- }
- }
-
- openNextFile();
-
- LogLog.debug("<== DestinationDispatcherThread.init()");
- }
-
- private String getNextLog() {
- String log = null;
-
- if(mReader != null) {
- try {
- log = mReader.readLine();
- } catch (IOException excp) {
- LogLog.warn("LocalFileLogBuffer.getNextLog(): failed to read from file " + mCurrentLogfile, excp);
- }
-
- if(log == null) {
- closeCurrentFile();
- }
- }
-
- return log;
- }
-
- private void openNextFile() {
- LogLog.debug("==> openNextFile()");
-
- closeCurrentFile();
-
- while(mReader == null) {
- mCurrentLogfile = getNextLogfile();
-
- if(mCurrentLogfile != null) {
- try {
- FileReader fr = new FileReader(mCurrentLogfile);
-
- mReader = new BufferedReader(fr);
- } catch(FileNotFoundException excp) {
- LogLog.warn("openNextFile(): error while opening file " + mCurrentLogfile, excp);
- }
- }
- }
-
- LogLog.debug("<== openNextFile(" + mCurrentLogfile + ")");
- }
-
- private void closeCurrentFile() {
- LogLog.debug("==> closeCurrentFile(" + mCurrentLogfile + ")");
-
- if(mReader != null) {
- try {
- mReader.close();
- } catch(IOException excp) {
- // ignore
- }
- }
- mReader = null;
-
- archiveCurrentFile();
-
- LogLog.debug("<== closeCurrentFile(" + mCurrentLogfile + ")");
- }
-
- private void archiveCurrentFile() {
- if(mCurrentLogfile != null) {
- File logFile = new File(mCurrentLogfile);
- String archiveFilename = MiscUtil.replaceTokens(mFileLogBuffer.getArchiveDirectory() + File.separator + logFile.getName());
-
- try {
- if(logFile.exists()) {
- File archiveFile = new File(archiveFilename);
-
- MiscUtil.createParents(archiveFile);
-
- if(! logFile.renameTo(archiveFile)) {
- // TODO: renameTo() does not work in all cases. in case of failure, copy the file contents to the destination and delete the file
- }
-
- // TODO: ensure no more than mFileLogBuffer.getArchiveFileCount() archive files are kept
- }
- } catch(Exception excp) {
- LogLog.warn("archiveCurrentFile(): faile to move " + mCurrentLogfile + " to archive location " + archiveFilename, excp);
- }
- }
- mCurrentLogfile = null;
- }
-}
-
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/fbe800a1/agents-common/src/main/java/org/apache/log4j/LogBuffer.java
----------------------------------------------------------------------
diff --git a/agents-common/src/main/java/org/apache/log4j/LogBuffer.java b/agents-common/src/main/java/org/apache/log4j/LogBuffer.java
deleted file mode 100644
index 799aacb..0000000
--- a/agents-common/src/main/java/org/apache/log4j/LogBuffer.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.log4j;
-
-
-public interface LogBuffer<T> {
- public void start(LogDestination<T> destination);
-
- public void stop();
-
- boolean isAvailable();
-
- public boolean add(T log);
-}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/fbe800a1/agents-common/src/main/java/org/apache/log4j/LogDestination.java
----------------------------------------------------------------------
diff --git a/agents-common/src/main/java/org/apache/log4j/LogDestination.java b/agents-common/src/main/java/org/apache/log4j/LogDestination.java
deleted file mode 100644
index fd4e8f6..0000000
--- a/agents-common/src/main/java/org/apache/log4j/LogDestination.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.log4j;
-
-
-public interface LogDestination<T> {
- public void start();
-
- public void stop();
-
- boolean isAvailable();
-
- public boolean add(T log);
-}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/fbe800a1/plugin-common/src/main/java/org/apache/ranger/plugin/store/ServiceStore.java
----------------------------------------------------------------------
diff --git a/plugin-common/src/main/java/org/apache/ranger/plugin/store/ServiceStore.java b/plugin-common/src/main/java/org/apache/ranger/plugin/store/ServiceStore.java
index 570f20f..f986def 100644
--- a/plugin-common/src/main/java/org/apache/ranger/plugin/store/ServiceStore.java
+++ b/plugin-common/src/main/java/org/apache/ranger/plugin/store/ServiceStore.java
@@ -19,7 +19,6 @@
package org.apache.ranger.plugin.store;
-import java.util.ArrayList;
import java.util.List;
import org.apache.ranger.plugin.model.RangerPolicy;
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/fbe800a1/plugin-common/src/main/java/org/apache/ranger/plugin/store/file/ServiceFileStore.java
----------------------------------------------------------------------
diff --git a/plugin-common/src/main/java/org/apache/ranger/plugin/store/file/ServiceFileStore.java b/plugin-common/src/main/java/org/apache/ranger/plugin/store/file/ServiceFileStore.java
index ed6d168..feac5d4 100644
--- a/plugin-common/src/main/java/org/apache/ranger/plugin/store/file/ServiceFileStore.java
+++ b/plugin-common/src/main/java/org/apache/ranger/plugin/store/file/ServiceFileStore.java
@@ -25,6 +25,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -39,8 +40,6 @@ import org.apache.ranger.plugin.util.ServicePolicies;
public class ServiceFileStore extends BaseFileStore implements ServiceStore {
private static final Log LOG = LogFactory.getLog(ServiceFileStore.class);
- private List<RangerServiceDef> serviceDefs = null;
-
private long nextServiceDefId = 0;
private long nextServiceId = 0;
private long nextPolicyId = 0;
@@ -89,8 +88,6 @@ public class ServiceFileStore extends BaseFileStore implements ServiceStore {
ret = saveToFile(serviceDef, false);
- addServiceDef(ret);
-
postCreate(ret);
} catch(Exception excp) {
LOG.warn("ServiceDefFileStore.createServiceDef(): failed to save service-def '" + serviceDef.getName() + "'", excp);
@@ -187,8 +184,6 @@ public class ServiceFileStore extends BaseFileStore implements ServiceStore {
Path filePath = new Path(getServiceDefFile(id));
deleteFile(filePath);
-
- removeServiceDef(existing);
postDelete(existing);
} catch(Exception excp) {
@@ -236,7 +231,57 @@ public class ServiceFileStore extends BaseFileStore implements ServiceStore {
LOG.debug("==> ServiceDefFileStore.getAllServiceDefs()");
}
- List<RangerServiceDef> ret = serviceDefs;
+ List<RangerServiceDef> ret = new ArrayList<RangerServiceDef>();
+
+ try {
+ // load definitions for legacy services from embedded resources
+ String[] legacyServiceDefResources = {
+ "/service-defs/ranger-servicedef-hdfs.json",
+ "/service-defs/ranger-servicedef-hive.json",
+ "/service-defs/ranger-servicedef-hbase.json",
+ "/service-defs/ranger-servicedef-knox.json",
+ "/service-defs/ranger-servicedef-storm.json",
+ };
+
+ for(String resource : legacyServiceDefResources) {
+ RangerServiceDef sd = loadFromResource(resource, RangerServiceDef.class);
+
+ if(sd != null) {
+ ret.add(sd);
+ }
+ }
+ nextServiceDefId = getMaxId(ret) + 1;
+
+ // load service definitions from file system
+ List<RangerServiceDef> sds = loadFromDir(new Path(getDataDir()), FILE_PREFIX_SERVICE_DEF, RangerServiceDef.class);
+
+ if(sds != null) {
+ for(RangerServiceDef sd : sds) {
+ if(sd != null) {
+ if(isLegacyServiceDef(sd)) {
+ LOG.warn("Found in-built service-def '" + sd.getName() + "' under " + getDataDir() + ". Ignorning");
+
+ continue;
+ }
+
+ // if the ServiceDef is already found, remove the earlier definition
+ for(int i = 0; i < ret.size(); i++) {
+ RangerServiceDef currSd = ret.get(i);
+
+ if(StringUtils.equals(currSd.getName(), sd.getName()) ||
+ ObjectUtils.equals(currSd.getId(), sd.getId())) {
+ ret.remove(i);
+ }
+ }
+
+ ret.add(sd);
+ }
+ }
+ }
+ nextServiceDefId = getMaxId(ret) + 1;
+ } catch(Exception excp) {
+ LOG.error("ServiceDefFileStore.getAllServiceDefs(): failed to read service-defs", excp);
+ }
if(LOG.isDebugEnabled()) {
LOG.debug("<== ServiceDefFileStore.getAllServiceDefs(): count=" + (ret == null ? 0 : ret.size()));
@@ -423,6 +468,8 @@ public class ServiceFileStore extends BaseFileStore implements ServiceStore {
try {
ret = loadFromDir(new Path(getDataDir()), FILE_PREFIX_SERVICE, RangerService.class);
+
+ nextServiceId = getMaxId(ret) + 1;
} catch(Exception excp) {
LOG.error("ServiceFileStore.getAllServices(): failed to read services", excp);
}
@@ -646,6 +693,8 @@ public class ServiceFileStore extends BaseFileStore implements ServiceStore {
try {
ret = loadFromDir(new Path(getDataDir()), FILE_PREFIX_POLICY, RangerPolicy.class);
+
+ nextPolicyId = getMaxId(ret) + 1;
} catch(Exception excp) {
LOG.error("ServiceFileStore.getAllPolicies(): failed to read policies", excp);
}
@@ -776,9 +825,6 @@ public class ServiceFileStore extends BaseFileStore implements ServiceStore {
}
super.init();
-
- initServiceDef();
- initService();
if(LOG.isDebugEnabled()) {
LOG.debug("<== ServiceFileStore.init()");
@@ -786,94 +832,6 @@ public class ServiceFileStore extends BaseFileStore implements ServiceStore {
}
- private void initServiceDef() {
- if(LOG.isDebugEnabled()) {
- LOG.debug("==> ServiceDefFileStore.initServiceDef()");
- }
-
- super.init();
-
- try {
- serviceDefs = new ArrayList<RangerServiceDef>();
-
- // load definitions for legacy services from embedded resources
- String[] legacyServiceDefResources = {
- "/service-defs/ranger-servicedef-hdfs.json",
- "/service-defs/ranger-servicedef-hive.json",
- "/service-defs/ranger-servicedef-hbase.json",
- "/service-defs/ranger-servicedef-knox.json",
- "/service-defs/ranger-servicedef-storm.json",
- };
-
- for(String resource : legacyServiceDefResources) {
- RangerServiceDef sd = loadFromResource(resource, RangerServiceDef.class);
-
- if(sd != null) {
- serviceDefs.add(sd);
- }
- }
- nextServiceDefId = getMaxId(serviceDefs) + 1;
-
- // load service definitions from file system
- List<RangerServiceDef> sds = loadFromDir(new Path(getDataDir()), FILE_PREFIX_SERVICE_DEF, RangerServiceDef.class);
-
- if(sds != null) {
- for(RangerServiceDef sd : sds) {
- if(sd != null) {
- if(isLegacyServiceDef(sd)) {
- LOG.warn("Found in-built service-def '" + sd.getName() + "' under " + getDataDir() + ". Ignorning");
-
- continue;
- }
-
- RangerServiceDef existingSd = findServiceDefByName(sd.getName());
-
- if(existingSd != null) {
- removeServiceDef(existingSd);
- }
-
- existingSd = findServiceDefById(sd.getId());
-
- if(existingSd != null) {
- removeServiceDef(existingSd);
- }
-
- serviceDefs.add(sd);
- }
- }
- }
- nextServiceDefId = getMaxId(serviceDefs) + 1;
- } catch(Exception excp) {
- LOG.error("ServiceDefFileStore.initServiceDef(): failed to read service-defs", excp);
- }
-
- if(LOG.isDebugEnabled()) {
- LOG.debug("<== ServiceDefFileStore.initServiceDef()");
- }
- }
-
- private void initService() {
- if(LOG.isDebugEnabled()) {
- LOG.debug("==> ServiceFileStore.initService()");
- }
-
- super.init();
-
- try {
- List<RangerService> services = loadFromDir(new Path(getDataDir()), FILE_PREFIX_SERVICE, RangerService.class);
- List<RangerPolicy> policies = loadFromDir(new Path(getDataDir()), FILE_PREFIX_POLICY, RangerPolicy.class);
-
- nextServiceId = getMaxId(services) + 1;
- nextPolicyId = getMaxId(policies) + 1;
- } catch(Exception excp) {
- LOG.error("ServiceDefFileStore.initService() failed", excp);
- }
-
- if(LOG.isDebugEnabled()) {
- LOG.debug("<== ServiceFileStore.initService()");
- }
- }
-
private void handleServiceRename(RangerService service, String oldName) throws Exception {
List<RangerPolicy> policies = getAllPolicies();
@@ -931,9 +889,11 @@ public class ServiceFileStore extends BaseFileStore implements ServiceStore {
saveToFile(service, true);
}
- private RangerServiceDef findServiceDefById(long id) {
+ private RangerServiceDef findServiceDefById(long id) throws Exception {
RangerServiceDef ret = null;
+ List<RangerServiceDef> serviceDefs = getAllServiceDefs();
+
for(RangerServiceDef sd : serviceDefs) {
if(sd != null && sd.getId() != null && sd.getId().longValue() == id) {
ret = sd;
@@ -945,9 +905,11 @@ public class ServiceFileStore extends BaseFileStore implements ServiceStore {
return ret;
}
- private RangerServiceDef findServiceDefByName(String sdName) {
+ private RangerServiceDef findServiceDefByName(String sdName) throws Exception {
RangerServiceDef ret = null;
+ List<RangerServiceDef> serviceDefs = getAllServiceDefs();
+
for(RangerServiceDef sd : serviceDefs) {
if(sd != null && StringUtils.equalsIgnoreCase(sd.getName(), sdName)) {
ret = sd;
@@ -959,14 +921,6 @@ public class ServiceFileStore extends BaseFileStore implements ServiceStore {
return ret;
}
- private void addServiceDef(RangerServiceDef sd) {
- serviceDefs.add(sd);
- }
-
- private void removeServiceDef(RangerServiceDef sd) {
- serviceDefs.remove(sd);
- }
-
private boolean isLegacyServiceDef(RangerServiceDef sd) {
return sd == null ? false : (isLegacyServiceDef(sd.getName()) || isLegacyServiceDef(sd.getId()));
}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/fbe800a1/plugin-common/src/main/java/org/apache/ranger/plugin/util/PolicyRefresher.java
----------------------------------------------------------------------
diff --git a/plugin-common/src/main/java/org/apache/ranger/plugin/util/PolicyRefresher.java b/plugin-common/src/main/java/org/apache/ranger/plugin/util/PolicyRefresher.java
index 489b5c0..12d616c 100644
--- a/plugin-common/src/main/java/org/apache/ranger/plugin/util/PolicyRefresher.java
+++ b/plugin-common/src/main/java/org/apache/ranger/plugin/util/PolicyRefresher.java
@@ -53,6 +53,20 @@ public class PolicyRefresher extends Thread {
}
}
+ /**
+ * @return the pollingIntervalMilliSeconds
+ */
+ public long getPollingIntervalMilliSeconds() {
+ return pollingIntervalMilliSeconds;
+ }
+
+ /**
+ * @param pollingIntervalMilliSeconds the pollingIntervalMilliSeconds to set
+ */
+ public void setPollingIntervalMilliSeconds(long pollingIntervalMilliSeconds) {
+ this.pollingIntervalMilliSeconds = pollingIntervalMilliSeconds;
+ }
+
public void stopRefresher() {
shutdownFlag = true;
}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/fbe800a1/plugin-common/src/test/java/org/apache/ranger/plugin/store/TestServiceStore.java
----------------------------------------------------------------------
diff --git a/plugin-common/src/test/java/org/apache/ranger/plugin/store/TestServiceStore.java b/plugin-common/src/test/java/org/apache/ranger/plugin/store/TestServiceStore.java
index 16e4fc5..722c8a7 100644
--- a/plugin-common/src/test/java/org/apache/ranger/plugin/store/TestServiceStore.java
+++ b/plugin-common/src/test/java/org/apache/ranger/plugin/store/TestServiceStore.java
@@ -38,23 +38,27 @@ import org.junit.Test;
public class TestServiceStore {
static ServiceStore svcStore = null;
- static String sdName = "svcDef-unit-test-TestServiceStore";
- static String serviceName = "svc-unit-test-TestServiceStore";
- static String policyName = "testPolicy-1";
+ static final String sdName = "svcDef-unit-test-TestServiceStore";
+ static final String serviceName = "svc-unit-test-TestServiceStore";
+ static final String policyName = "testPolicy-1";
@BeforeClass
public static void setupTest() throws Exception {
svcStore = ServiceStoreFactory.instance().getServiceStore();
// cleanup if the test service and service-def if they already exist
- RangerService svc = svcStore.getServiceByName(serviceName);
- if(svc != null) {
- svcStore.deleteService(svc.getId());
+ List<RangerService> services = svcStore.getAllServices();
+ for(RangerService service : services) {
+ if(service.getName().startsWith(serviceName)) {
+ svcStore.deleteService(service.getId());
+ }
}
- RangerServiceDef svcDef = svcStore.getServiceDefByName(sdName);
- if(svcDef != null) {
- svcStore.deleteServiceDef(svcDef.getId());
+ List<RangerServiceDef> serviceDefs = svcStore.getAllServiceDefs();
+ for(RangerServiceDef serviceDef : serviceDefs) {
+ if(serviceDef.getName().startsWith(sdName)) {
+ svcStore.deleteServiceDef(serviceDef.getId());
+ }
}
}
@@ -205,7 +209,7 @@ public class TestServiceStore {
assertEquals("getServicePolicies(" + updatedSvc.getName() + ") failed", svcPolicies.getServiceId(), updatedSvc.getId());
assertEquals("getServicePolicies(" + updatedSvc.getName() + ") failed", svcPolicies.getPolicyVersion(), updatedSvc.getPolicyVersion());
assertEquals("getServicePolicies(" + updatedSvc.getName() + ") failed", svcPolicies.getPolicyUpdateTime(), updatedSvc.getPolicyUpdateTime());
- assertEquals("getServicePolicies(" + updatedSvc.getName() + ") failed", svcPolicies.getServiceDef(), updatedSd);
+ assertEquals("getServicePolicies(" + updatedSvc.getName() + ") failed", svcPolicies.getServiceDef().getId(), updatedSd.getId());
assertEquals("getServicePolicies(" + updatedSvc.getName() + ") failed", svcPolicies.getPolicies().size(), 1);
assertEquals("getServicePolicies(" + updatedSvc.getName() + ") failed", svcPolicies.getPolicies().get(0).getName(), updatedPolicy.getName());
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/fbe800a1/plugin-common/src/test/java/org/apache/ranger/plugin/util/TestPolicyRefresher.java
----------------------------------------------------------------------
diff --git a/plugin-common/src/test/java/org/apache/ranger/plugin/util/TestPolicyRefresher.java b/plugin-common/src/test/java/org/apache/ranger/plugin/util/TestPolicyRefresher.java
index 030c1f1..a1da8c2 100644
--- a/plugin-common/src/test/java/org/apache/ranger/plugin/util/TestPolicyRefresher.java
+++ b/plugin-common/src/test/java/org/apache/ranger/plugin/util/TestPolicyRefresher.java
@@ -42,15 +42,17 @@ public class TestPolicyRefresher {
static ServiceStore svcStore = null;
static PolicyRefresher refresher = null;
- static long sleepTimeInMs = 35 * 1000;
- static String sdName = "hbase";
- static String svcName = "svc-unit-test-TestPolicyRefresher";
- static RangerService svc = null;
- static RangerPolicy policy1 = null;
- static RangerPolicy policy2 = null;
+ static final long pollingIntervalInMs = 5 * 1000;
+ static final long sleepTimeInMs = pollingIntervalInMs + (5 * 1000);
+ static final String sdName = "hbase";
+ static final String svcName = "svc-unit-test-TestPolicyRefresher";
- static boolean isPolicyRefreshed = false;
- static long policyCount = 0;
+ static RangerService svc = null;
+ static RangerPolicy policy1 = null;
+ static RangerPolicy policy2 = null;
+
+ static boolean isPolicyRefreshed = false;
+ static long policyCount = 0;
/**
@@ -77,6 +79,7 @@ public class TestPolicyRefresher {
};
refresher = new PolicyRefresher(policyEngine, svcName, svcStore);
+ refresher.setPollingIntervalMilliSeconds(pollingIntervalInMs);
refresher.start();
// create a service
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/fbe800a1/security-admin/src/main/java/org/apache/ranger/db/RangerDaoManager.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/db/RangerDaoManager.java b/security-admin/src/main/java/org/apache/ranger/db/RangerDaoManager.java
index 4227c90..4a11626 100644
--- a/security-admin/src/main/java/org/apache/ranger/db/RangerDaoManager.java
+++ b/security-admin/src/main/java/org/apache/ranger/db/RangerDaoManager.java
@@ -50,7 +50,10 @@ public class RangerDaoManager extends RangerDaoManagerBase {
}
public EntityManager getEntityManager(String persistenceContextUnit) {
- logger.error("RangerDaoManager.getEntityManager(" + persistenceContextUnit + ")");
+ if(logger.isDebugEnabled()) {
+ logger.debug("RangerDaoManager.getEntityManager(" + persistenceContextUnit + ")");
+ }
+
if (persistenceContextUnit.equalsIgnoreCase("loggingPU")) {
return loggingEM;
}