You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by mr...@apache.org on 2009/08/13 11:59:39 UTC
svn commit: r803825 -
/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/
Author: mreutegg
Date: Thu Aug 13 09:59:38 2009
New Revision: 803825
URL: http://svn.apache.org/viewvc?rev=803825&view=rev
Log:
JCR-1854: Use Journal as index redo log when available
- introduce a factory for redo logs
- expose ConsistencyCheck on SearchIndex
Added:
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/DefaultRedoLog.java (contents, props changed)
- copied, changed from r803812, jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/RedoLog.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/DefaultRedoLogFactory.java (with props)
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/RedoLog.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/RedoLogFactory.java (with props)
Modified:
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/ConsistencyCheck.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/ConsistencyCheckError.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/IndexHistory.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/MultiIndex.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/SearchIndex.java
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/ConsistencyCheck.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/ConsistencyCheck.java?rev=803825&r1=803824&r2=803825&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/ConsistencyCheck.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/ConsistencyCheck.java Thu Aug 13 09:59:38 2009
@@ -44,7 +44,7 @@
* in the index for such a node are removed, and the node is re-indexed.</li>
* </ul>
*/
-class ConsistencyCheck {
+public class ConsistencyCheck {
/**
* Logger instance for this class
@@ -102,7 +102,7 @@
* repair failure.
* @throws IOException if a repair failure occurs.
*/
- void repair(boolean ignoreFailure) throws IOException {
+ public void repair(boolean ignoreFailure) throws IOException {
if (errors.size() == 0) {
log.info("No errors found.");
return;
@@ -137,7 +137,7 @@
* Returns the errors detected by the consistency check.
* @return the errors detected by the consistency check.
*/
- List<ConsistencyCheckError> getErrors() {
+ public List<ConsistencyCheckError> getErrors() {
return new ArrayList<ConsistencyCheckError>(errors);
}
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/ConsistencyCheckError.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/ConsistencyCheckError.java?rev=803825&r1=803824&r2=803825&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/ConsistencyCheckError.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/ConsistencyCheckError.java Thu Aug 13 09:59:38 2009
@@ -23,7 +23,7 @@
/**
* Common base class for errors detected during the consistency check.
*/
-abstract class ConsistencyCheckError {
+public abstract class ConsistencyCheckError {
/**
* Diagnostic message for this error.
@@ -52,7 +52,7 @@
* Returns <code>true</code> if this error can be repaired.
* @return <code>true</code> if this error can be repaired.
*/
- abstract boolean repairable();
+ public abstract boolean repairable();
/**
* Executes the repair operation.
Copied: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/DefaultRedoLog.java (from r803812, jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/RedoLog.java)
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/DefaultRedoLog.java?p2=jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/DefaultRedoLog.java&p1=jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/RedoLog.java&r1=803812&r2=803825&rev=803825&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/RedoLog.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/DefaultRedoLog.java Thu Aug 13 09:59:38 2009
@@ -42,12 +42,12 @@
* <p/>
* This class is not thread-safe.
*/
-class RedoLog {
+class DefaultRedoLog implements RedoLog {
/**
* Logger instance for this class
*/
- private static final Logger log = LoggerFactory.getLogger(RedoLog.class);
+ private static final Logger log = LoggerFactory.getLogger(DefaultRedoLog.class);
/**
* Default name of the redo log file
@@ -102,7 +102,7 @@
* @param fileName the name of the redo log file.
* @throws IOException if an error occurs while reading the redo log.
*/
- private RedoLog(Directory dir, String fileName) throws IOException {
+ private DefaultRedoLog(Directory dir, String fileName) throws IOException {
this.dir = dir;
this.fileName = fileName;
read(ENTRY_COUNTER);
@@ -120,12 +120,12 @@
static RedoLog create(Directory dir, long generation) throws IOException {
String fileName;
if (generation == 0) {
- fileName = RedoLog.REDO_LOG;
+ fileName = REDO_LOG;
} else {
- fileName = RedoLog.REDO_LOG_PREFIX + Long.toString(
- generation, Character.MAX_RADIX) + RedoLog.DOT_LOG;
+ fileName = REDO_LOG_PREFIX + Long.toString(
+ generation, Character.MAX_RADIX) + DOT_LOG;
}
- return new RedoLog(dir, fileName);
+ return new DefaultRedoLog(dir, fileName);
}
/**
@@ -134,7 +134,7 @@
* @return <code>true</code> if this redo log contains any entries,
* <code>false</code> otherwise.
*/
- boolean hasEntries() {
+ public boolean hasEntries() {
return entryCount > 0;
}
@@ -142,7 +142,7 @@
* Returns the number of entries in this redo log.
* @return the number of entries in this redo log.
*/
- int getSize() {
+ public int getSize() {
return entryCount;
}
@@ -154,7 +154,7 @@
* redo log.
* @throws IOException if an error occurs while reading from the redo log.
*/
- List<MultiIndex.Action> getActions() throws IOException {
+ public List<MultiIndex.Action> getActions() throws IOException {
final List<MultiIndex.Action> actions = new ArrayList<MultiIndex.Action>();
read(new ActionCollector() {
public void collect(MultiIndex.Action a) {
@@ -171,7 +171,7 @@
* @throws IOException if the node cannot be written to the redo
* log.
*/
- void append(MultiIndex.Action action) throws IOException {
+ public void append(MultiIndex.Action action) throws IOException {
initOut();
out.write(action.toString() + "\n");
entryCount++;
@@ -181,7 +181,7 @@
* Flushes all pending writes to the underlying file.
* @throws IOException if an error occurs while writing.
*/
- void flush() throws IOException {
+ public void flush() throws IOException {
if (out != null) {
out.flush();
}
@@ -192,7 +192,7 @@
*
* @throws IOException if an error occurs while flushing pending writes.
*/
- void close() throws IOException {
+ public void close() throws IOException {
if (out != null) {
out.close();
out = null;
@@ -212,7 +212,7 @@
}
/**
- * Reads the log file and calls back {@link RedoLog.ActionCollector}.
+ * Reads the log file and calls back {@link DefaultRedoLog.ActionCollector}.
*
* @param collector called back for each {@link MultiIndex.Action} read.
* @throws IOException if an error occurs while reading from the
Propchange: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/DefaultRedoLog.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/DefaultRedoLogFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/DefaultRedoLogFactory.java?rev=803825&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/DefaultRedoLogFactory.java (added)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/DefaultRedoLogFactory.java Thu Aug 13 09:59:38 2009
@@ -0,0 +1,29 @@
+/*
+ * 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.jackrabbit.core.query.lucene;
+
+import java.io.IOException;
+
+/**
+ * <code>DefaultRedoLogFactory</code>...
+ */
+public class DefaultRedoLogFactory implements RedoLogFactory {
+
+ public RedoLog createRedoLog(MultiIndex index) throws IOException {
+ return DefaultRedoLog.create(index.getDirectory(), index.getIndexGeneration());
+ }
+}
Propchange: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/DefaultRedoLogFactory.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/IndexHistory.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/IndexHistory.java?rev=803825&r1=803824&r2=803825&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/IndexHistory.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/IndexHistory.java Thu Aug 13 09:59:38 2009
@@ -198,11 +198,11 @@
*/
String getRedoLogName(long generation) {
if (generation == 0) {
- return RedoLog.REDO_LOG;
+ return DefaultRedoLog.REDO_LOG;
} else {
- return RedoLog.REDO_LOG_PREFIX +
+ return DefaultRedoLog.REDO_LOG_PREFIX +
Long.toString(generation, Character.MAX_RADIX) +
- RedoLog.DOT_LOG;
+ DefaultRedoLog.DOT_LOG;
}
}
}
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/MultiIndex.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/MultiIndex.java?rev=803825&r1=803824&r2=803825&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/MultiIndex.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/MultiIndex.java Thu Aug 13 09:59:38 2009
@@ -125,6 +125,11 @@
private final DirectoryManager directoryManager;
/**
+ * The redo log factory
+ */
+ private final RedoLogFactory redoLogFactory;
+
+ /**
* The base directory to store the index.
*/
private final Directory indexDir;
@@ -232,6 +237,7 @@
*/
MultiIndex(SearchIndex handler, Set<NodeId> excludedIDs) throws IOException {
this.directoryManager = handler.getDirectoryManager();
+ this.redoLogFactory = handler.getRedoLogFactory();
this.indexDir = directoryManager.getDirectory(".");
this.handler = handler;
this.cache = new DocNumberCache(handler.getCacheSize());
@@ -246,7 +252,7 @@
// as of 1.5 deletable file is not used anymore
removeDeletable();
- this.redoLog = RedoLog.create(indexDir, indexNames.getGeneration());
+ this.redoLog = redoLogFactory.createRedoLog(this);
// initialize IndexMerger
merger = new IndexMerger(this, handler.getIndexMergerPoolSize());
@@ -766,6 +772,17 @@
}
/**
+ * Runs a consistency check on this multi index.
+ *
+ * @return the consistency check.
+ * @throws IOException if an error occurs while running the check.
+ */
+ ConsistencyCheck runConsistencyCheck() throws IOException {
+ return ConsistencyCheck.run(this,
+ handler.getContext().getItemStateManager());
+ }
+
+ /**
* Closes this <code>MultiIndex</code>.
*/
void close() {
@@ -824,6 +841,20 @@
}
/**
+ * @return the base directory of the index.
+ */
+ Directory getDirectory() {
+ return indexDir;
+ }
+
+ /**
+ * @return the current generation of the index names.
+ */
+ long getIndexGeneration() {
+ return indexNames.getGeneration();
+ }
+
+ /**
* Returns a lucene Document for the <code>node</code>.
*
* @param node the node to index.
@@ -942,7 +973,7 @@
// close redo.log and create a new one based
// on the new indexNames generation
redoLog.close();
- redoLog = RedoLog.create(indexDir, indexNames.getGeneration());
+ redoLog = redoLogFactory.createRedoLog(this);
}
lastFlushTime = System.currentTimeMillis();
Added: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/RedoLog.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/RedoLog.java?rev=803825&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/RedoLog.java (added)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/RedoLog.java Thu Aug 13 09:59:38 2009
@@ -0,0 +1,77 @@
+/*
+ * 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.jackrabbit.core.query.lucene;
+
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * Defines a redo log for changes that have not been committed to disk. While
+ * nodes are added to and removed from the volatile index (held in memory) a
+ * redo log is maintained to keep track of the changes. In case the Jackrabbit
+ * process terminates unexpected the redo log is applied when Jackrabbit is
+ * restarted the next time.
+ */
+public interface RedoLog {
+
+ /**
+ * Returns <code>true</code> if this redo log contains any entries,
+ * <code>false</code> otherwise.
+ * @return <code>true</code> if this redo log contains any entries,
+ * <code>false</code> otherwise.
+ */
+ boolean hasEntries();
+
+ /**
+ * Returns the number of entries in this redo log.
+ * @return the number of entries in this redo log.
+ */
+ int getSize();
+
+ /**
+ * Returns a List with all {@link MultiIndex.Action} instances in the
+ * redo log.
+ *
+ * @return an List with all {@link MultiIndex.Action} instances in the
+ * redo log.
+ * @throws IOException if an error occurs while reading from the redo log.
+ */
+ List<MultiIndex.Action> getActions() throws IOException;
+
+ /**
+ * Appends an action to the log.
+ *
+ * @param action the action to append.
+ * @throws IOException if the node cannot be written to the redo
+ * log.
+ */
+ void append(MultiIndex.Action action) throws IOException;
+
+ /**
+ * Flushes all pending writes to the redo log.
+ *
+ * @throws IOException if an error occurs while writing.
+ */
+ void flush() throws IOException;
+
+ /**
+ * Flushes all pending writes to the redo log and closes it.
+ *
+ * @throws IOException if an error occurs while writing.
+ */
+ void close() throws IOException;
+}
Added: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/RedoLogFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/RedoLogFactory.java?rev=803825&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/RedoLogFactory.java (added)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/RedoLogFactory.java Thu Aug 13 09:59:38 2009
@@ -0,0 +1,36 @@
+/*
+ * 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.jackrabbit.core.query.lucene;
+
+import java.io.IOException;
+
+/**
+ * <code>RedoLogFactory</code> a factory for {@link RedoLog}s.
+ */
+public interface RedoLogFactory {
+
+ /**
+ * Creates a redo log starting at the current state of the
+ * <code>index</code>.
+ *
+ * @param index the index.
+ * @return the redo log.
+ * @throws IOException if an error occurs while reading from the index or
+ * the log cannot be created for some other reason.
+ */
+ public RedoLog createRedoLog(MultiIndex index) throws IOException;
+}
Propchange: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/RedoLogFactory.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/SearchIndex.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/SearchIndex.java?rev=803825&r1=803824&r2=803825&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/SearchIndex.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/SearchIndex.java Thu Aug 13 09:59:38 2009
@@ -460,6 +460,16 @@
private int indexMergerPoolSize = DEFAULT_INDEX_MERGER_POOL_SIZE;
/**
+ * The name of the redo log factory class implementation.
+ */
+ private String redoLogFactoryClass = DefaultRedoLogFactory.class.getName();
+
+ /**
+ * The redo log factory.
+ */
+ private RedoLogFactory redoLogFactory;
+
+ /**
* Indicates if this <code>SearchIndex</code> is closed and cannot be used
* anymore.
*/
@@ -493,6 +503,7 @@
extractor = createTextExtractor();
synProvider = createSynonymProvider();
directoryManager = createDirectoryManager();
+ redoLogFactory = createRedoLogFactory();
if (context.getParentHandler() instanceof SearchIndex) {
// use system namespace mappings
@@ -535,8 +546,7 @@
&& (index.getRedoLogApplied() || forceConsistencyCheck)) {
log.info("Running consistency check...");
try {
- ConsistencyCheck check = ConsistencyCheck.run(index,
- context.getItemStateManager());
+ ConsistencyCheck check = runConsistencyCheck();
if (autoRepair) {
check.repair(true);
} else {
@@ -1000,6 +1010,23 @@
}
/**
+ * @return the redo log factory for this search index.
+ */
+ public RedoLogFactory getRedoLogFactory() {
+ return redoLogFactory;
+ }
+
+ /**
+ * Runs a consistency check on this search index.
+ *
+ * @return the result of the consistency check.
+ * @throws IOException if an error occurs while running the check.
+ */
+ public ConsistencyCheck runConsistencyCheck() throws IOException {
+ return index.runConsistencyCheck();
+ }
+
+ /**
* Returns an index reader for this search index. The caller of this method
* is responsible for closing the index reader when he is finished using
* it.
@@ -1196,12 +1223,34 @@
}
/**
+ * Creates a redo log factory based on {@link #getRedoLogFactoryClass()}.
+ *
+ * @return the redo log factory.
+ * @throws IOException if an error occurs while creating the factory.
+ */
+ protected RedoLogFactory createRedoLogFactory() throws IOException {
+ try {
+ Class<?> clazz = Class.forName(redoLogFactoryClass);
+ if (!RedoLogFactory.class.isAssignableFrom(clazz)) {
+ throw new IOException(redoLogFactoryClass +
+ " is not a RedoLogFactory implementation");
+ }
+ return (RedoLogFactory) clazz.newInstance();
+ } catch (Exception e) {
+ IOException ex = new IOException();
+ ex.initCause(e);
+ throw ex;
+ }
+ }
+
+ /**
* Creates a file system resource to the synonym provider configuration.
*
* @return a file system resource or <code>null</code> if no path was
* configured.
* @throws FileSystemException if an exception occurs accessing the file
* system.
+ * @throws IOException if another exception occurs.
*/
protected FileSystemResource createSynonymProviderConfigResource()
throws FileSystemException, IOException {
@@ -2243,6 +2292,23 @@
this.maxHistoryAge = maxHistoryAge;
}
+ /**
+ * @return the name of the redo log factory class.
+ */
+ public String getRedoLogFactoryClass() {
+ return redoLogFactoryClass;
+ }
+
+ /**
+ * Sets the name of the redo log factory class. Must implement
+ * {@link RedoLogFactory}.
+ *
+ * @param className the name of the redo log factory class.
+ */
+ public void setRedoLogFactoryClass(String className) {
+ this.redoLogFactoryClass = className;
+ }
+
//----------------------------< internal >----------------------------------
/**