You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@asterixdb.apache.org by "Michael Blow (Code Review)" <do...@asterixdb.incubator.apache.org> on 2017/03/16 03:16:34 UTC

Change in asterixdb[master]: Add Missing Descriptions For Config Options

Michael Blow has uploaded a new change for review.

  https://asterix-gerrit.ics.uci.edu/1589

Change subject: Add Missing Descriptions For Config Options
......................................................................

Add Missing Descriptions For Config Options

Also, expose knob for enabling transaction commit profile logs as config
option

Change-Id: I04826591133e7e8283b7288e14324659fd831954
---
M asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/TransactionSubsystem.java
M asterixdb/asterix-app/src/test/java/org/apache/asterix/common/config/ConfigUsageTest.java
M asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1/cluster_state_1.1.adm
M asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_full/cluster_state_1_full.1.adm
M asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_less/cluster_state_1_less.1.adm
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/MessagingProperties.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/ReplicationProperties.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/TransactionProperties.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/utils/TransactionUtil.java
M asterixdb/asterix-doc/src/site/markdown/ncservice.md
M asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/recovery/RemoteRecoveryManager.java
M asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/logging/LogBuffer.java
12 files changed, 99 insertions(+), 81 deletions(-)


  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/89/1589/1

diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/TransactionSubsystem.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/TransactionSubsystem.java
index 88311c5..ec1a386 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/TransactionSubsystem.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/TransactionSubsystem.java
@@ -21,7 +21,6 @@
 import java.util.concurrent.Callable;
 import java.util.logging.Logger;
 
-import org.apache.asterix.common.config.IPropertiesProvider;
 import org.apache.asterix.common.config.ReplicationProperties;
 import org.apache.asterix.common.config.TransactionProperties;
 import org.apache.asterix.common.exceptions.ACIDException;
@@ -36,7 +35,6 @@
 import org.apache.asterix.common.transactions.ITransactionManager;
 import org.apache.asterix.common.transactions.ITransactionSubsystem;
 import org.apache.asterix.common.utils.StorageConstants;
-import org.apache.asterix.common.utils.TransactionUtil;
 import org.apache.asterix.transaction.management.service.locking.ConcurrentLockManager;
 import org.apache.asterix.transaction.management.service.logging.LogManager;
 import org.apache.asterix.transaction.management.service.logging.LogManagerWithReplication;
@@ -70,8 +68,8 @@
         this.txnProperties = txnProperties;
         this.transactionManager = new TransactionManager(this);
         this.lockManager = new ConcurrentLockManager(txnProperties.getLockManagerShrinkTimer());
-        ReplicationProperties repProperties = ((IPropertiesProvider) asterixAppRuntimeContextProvider
-                .getAppContext()).getReplicationProperties();
+        ReplicationProperties repProperties = asterixAppRuntimeContextProvider.getAppContext()
+                .getReplicationProperties();
         IReplicationStrategy replicationStrategy = repProperties.getReplicationStrategy();
         final boolean replicationEnabled = repProperties.isParticipant(id);
 
@@ -91,7 +89,7 @@
         }
         this.recoveryManager = new RecoveryManager(this, serviceCtx);
 
-        if (TransactionUtil.PROFILE_MODE) {
+        if (this.txnProperties.isCommitProfilerEnabled()) {
             ecp = new EntityCommitProfiler(this, this.txnProperties.getCommitProfilerReportInterval());
             getAsterixAppRuntimeContextProvider().getThreadExecutor().submit(ecp);
         }
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/common/config/ConfigUsageTest.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/common/config/ConfigUsageTest.java
index 6a8dabf..acd4540 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/common/config/ConfigUsageTest.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/common/config/ConfigUsageTest.java
@@ -124,14 +124,15 @@
         // output header
         for (Column column : columns) {
             buf.append(column.ordinal() == 0 ? startDelim : midDelim);
-            pad(buf, StringUtils.capitalize(column.name().toLowerCase()), calculateMaxWidth(column, column.name()));
+            pad(buf, StringUtils.capitalize(column.name().toLowerCase()),
+                    align.computeIfAbsent(column, c -> false) ? calculateMaxWidth(column, column.name()) : 0);
         }
         buf.append(endDelim).append('\n');
 
         StringBuilder sepLine = new StringBuilder();
         for (Column column : columns) {
             sepLine.append(column.ordinal() == 0 ? startDelim : midDelim);
-            pad(sepLine, "", maxWidths.get(column), '-');
+            pad(sepLine, "", maxWidths.getOrDefault(column, 0), '-');
         }
         sepLine.append(endDelim).append('\n');
         buf.append(sepLine.toString().replace(' ', '-'));
@@ -143,9 +144,9 @@
                 for (Column column : columns) {
                     buf.append(column.ordinal() == 0 ? startDelim : midDelim);
                     if (column == Column.SECTION) {
-                        center(buf, extractValue(column, option), maxWidths.get(column));
+                        center(buf, extractValue(column, option), maxWidths.getOrDefault(column, 0));
                     } else {
-                        pad(buf, extractValue(column, option), maxWidths.get(column));
+                        pad(buf, extractValue(column, option), maxWidths.getOrDefault(column, 0));
                     }
                 }
                 buf.append(endDelim).append('\n');
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1/cluster_state_1.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1/cluster_state_1.1.adm
index bb241ba..aebf817 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1/cluster_state_1.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1/cluster_state_1.1.adm
@@ -26,6 +26,7 @@
     "replication.log.buffer.pagesize" : 131072,
     "replication.max.remote.recovery.attempts" : 5,
     "replication.timeout" : 30,
+    "txn.commitprofiler.enabled" : false,
     "txn.commitprofiler.reportinterval" : 5,
     "txn.job.recovery.memorysize" : 67108864,
     "txn.lock.escalationthreshold" : 1000,
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_full/cluster_state_1_full.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_full/cluster_state_1_full.1.adm
index 3ee13c9..47ea9d6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_full/cluster_state_1_full.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_full/cluster_state_1_full.1.adm
@@ -26,6 +26,7 @@
     "replication.log.buffer.pagesize" : 131072,
     "replication.max.remote.recovery.attempts" : 5,
     "replication.timeout" : 30,
+    "txn.commitprofiler.enabled" : false,
     "txn.commitprofiler.reportinterval" : 5,
     "txn.job.recovery.memorysize" : 67108864,
     "txn.lock.escalationthreshold" : 1000,
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_less/cluster_state_1_less.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_less/cluster_state_1_less.1.adm
index 64d2f94..b39ccd7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_less/cluster_state_1_less.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_less/cluster_state_1_less.1.adm
@@ -26,6 +26,7 @@
     "replication.log.buffer.pagesize" : 131072,
     "replication.max.remote.recovery.attempts" : 5,
     "replication.timeout" : 30,
+    "txn.commitprofiler.enabled" : false,
     "txn.commitprofiler.reportinterval" : 5,
     "txn.job.recovery.memorysize" : 67108864,
     "txn.lock.escalationthreshold" : 1000,
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/MessagingProperties.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/MessagingProperties.java
index 8097b5f..6a96546 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/MessagingProperties.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/MessagingProperties.java
@@ -30,15 +30,18 @@
 public class MessagingProperties extends AbstractProperties {
 
     public enum Option implements IOption {
-        MESSAGING_FRAME_SIZE(INTEGER_BYTE_UNIT, StorageUtil.getIntSizeInBytes(4, KILOBYTE)),
-        MESSAGING_FRAME_COUNT(INTEGER, 512);
+        MESSAGING_FRAME_SIZE(INTEGER_BYTE_UNIT, StorageUtil.getIntSizeInBytes(4, KILOBYTE),
+                "The frame size to be used for NC to NC messaging"),
+        MESSAGING_FRAME_COUNT(INTEGER, 512, "Number of reusable frames for NC to NC messaging");
 
         private final IOptionType type;
         private final Object defaultValue;
+        private final String description;
 
-        Option(IOptionType type, Object defaultValue) {
+        Option(IOptionType type, Object defaultValue, String description) {
             this.type = type;
             this.defaultValue = defaultValue;
+            this.description = description;
         }
 
         @Override
@@ -48,8 +51,7 @@
 
         @Override
         public String description() {
-            // TODO(mblow): add missing descriptions
-            return null;
+            return description;
         }
 
         @Override
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/ReplicationProperties.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/ReplicationProperties.java
index efa5296..bbd81db 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/ReplicationProperties.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/ReplicationProperties.java
@@ -39,20 +39,25 @@
 public class ReplicationProperties extends AbstractProperties {
 
     public enum Option implements IOption {
-        REPLICATION_MAX_REMOTE_RECOVERY_ATTEMPTS(INTEGER, 5),
+        REPLICATION_MAX_REMOTE_RECOVERY_ATTEMPTS(INTEGER, 5,
+                "The maximum numbe of times to attempt to recover from a replica on failure before giving up"),
         REPLICATION_LOG_BUFFER_PAGESIZE(INTEGER_BYTE_UNIT, StorageUtil.getIntSizeInBytes(128,
-                StorageUnit.KILOBYTE)),
-        REPLICATION_LOG_BUFFER_NUMPAGES(INTEGER, 8),
-        REPLICATION_LOG_BATCHSIZE(INTEGER_BYTE_UNIT, StorageUtil.getIntSizeInBytes(4, StorageUnit.KILOBYTE)),
-        REPLICATION_TIMEOUT(INTEGER, REPLICATION_TIME_OUT_DEFAULT),
+                StorageUnit.KILOBYTE), "The size in bytes of each log buffer page"),
+        REPLICATION_LOG_BUFFER_NUMPAGES(INTEGER, 8, "The number of log buffer pages"),
+        REPLICATION_LOG_BATCHSIZE(INTEGER_BYTE_UNIT, StorageUtil.getIntSizeInBytes(4, StorageUnit.KILOBYTE),
+                "The size in bytes to replicate in each batch"),
+        REPLICATION_TIMEOUT(INTEGER, REPLICATION_TIME_OUT_DEFAULT,
+                "The time in seconds to timeout when trying to contact a replica, before assuming it is dead"),
         ;
 
         private final IOptionType type;
         private final Object defaultValue;
+        private final String description;
 
-        Option(IOptionType type, Object defaultValue) {
+        Option(IOptionType type, Object defaultValue, String description) {
             this.type = type;
             this.defaultValue = defaultValue;
+            this.description = description;
         }
 
         @Override
@@ -62,8 +67,7 @@
 
         @Override
         public String description() {
-            // TODO(mblow): add missing descriptions
-            return null;
+            return description;
         }
 
         @Override
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/TransactionProperties.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/TransactionProperties.java
index 97ad6be..b809b4d 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/TransactionProperties.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/TransactionProperties.java
@@ -18,6 +18,7 @@
  */
 package org.apache.asterix.common.config;
 
+import static org.apache.hyracks.control.common.config.OptionTypes.BOOLEAN;
 import static org.apache.hyracks.control.common.config.OptionTypes.INTEGER;
 import static org.apache.hyracks.control.common.config.OptionTypes.INTEGER_BYTE_UNIT;
 import static org.apache.hyracks.control.common.config.OptionTypes.LONG_BYTE_UNIT;
@@ -37,17 +38,23 @@
         TXN_LOG_BUFFER_NUMPAGES(INTEGER, 8, "The number of pages in the transaction log tail"),
         TXN_LOG_BUFFER_PAGESIZE(INTEGER_BYTE_UNIT, StorageUtil.getIntSizeInBytes(128, KILOBYTE),
                 "The page size (in bytes) for transaction log buffer"),
-        TXN_LOG_PARTITIONSIZE(LONG_BYTE_UNIT, StorageUtil.getLongSizeInBytes(256L, MEGABYTE), null),
+        TXN_LOG_PARTITIONSIZE(LONG_BYTE_UNIT, StorageUtil.getLongSizeInBytes(256L, MEGABYTE),
+                "The maximum size (in bytes) of each transaction log file"),
         TXN_LOG_CHECKPOINT_LSNTHRESHOLD(INTEGER_BYTE_UNIT, StorageUtil.getIntSizeInBytes(64, MEGABYTE),
                 "The checkpoint threshold (in terms of LSNs (log sequence numbers) that have been written to the " +
                         "transaction log, i.e., the length of the transaction log) for transaction logs"),
-        TXN_LOG_CHECKPOINT_POLLFREQUENCY(INTEGER, 120, null),
+        TXN_LOG_CHECKPOINT_POLLFREQUENCY(INTEGER, 120,
+                "The frequency (in seconds) the checkpoint thread should check to see if a checkpoint should be written"
+        ),
         TXN_LOG_CHECKPOINT_HISTORY(INTEGER, 0, "The number of checkpoints to keep in the transaction log"),
-        TXN_LOCK_ESCALATIONTHRESHOLD(INTEGER, 1000, null),
-        TXN_LOCK_SHRINKTIMER(INTEGER, 5000, null),
+        TXN_LOCK_ESCALATIONTHRESHOLD(INTEGER, 1000,
+                "The maximum number of entity locks to obtain before upgrading to a dataset lock"),
+        TXN_LOCK_SHRINKTIMER(INTEGER, 5000,
+                "The time (in milliseconds) where under utilization of resources will trigger a shrink phase"),
         TXN_LOCK_TIMEOUT_WAITTHRESHOLD(INTEGER, 60000, "Time out (in milliseconds) of waiting for a lock"),
         TXN_LOCK_TIMEOUT_SWEEPTHRESHOLD(INTEGER, 10000, "Interval (in milliseconds) for checking lock timeout"),
-        TXN_COMMITPROFILER_REPORTINTERVAL(INTEGER, 5, null),
+        TXN_COMMITPROFILER_ENABLED(BOOLEAN, false, "Enable output of commit profiler logs"),
+        TXN_COMMITPROFILER_REPORTINTERVAL(INTEGER, 5, "Interval (in seconds) to report commit profiler logs"),
         TXN_JOB_RECOVERY_MEMORYSIZE(LONG_BYTE_UNIT, StorageUtil.getLongSizeInBytes(64L, MEGABYTE),
                 "The memory budget (in bytes) used for recovery");
 
@@ -138,6 +145,10 @@
         return accessor.getInt(Option.TXN_LOCK_TIMEOUT_SWEEPTHRESHOLD);
     }
 
+    public boolean isCommitProfilerEnabled() {
+        return accessor.getBoolean(Option.TXN_COMMITPROFILER_ENABLED);
+    }
+
     public int getCommitProfilerReportInterval() {
         return accessor.getInt(Option.TXN_COMMITPROFILER_REPORTINTERVAL);
     }
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/utils/TransactionUtil.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/utils/TransactionUtil.java
index 4ba35ae..e9f96f9 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/utils/TransactionUtil.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/utils/TransactionUtil.java
@@ -29,8 +29,6 @@
 
 public class TransactionUtil {
 
-    public static final boolean PROFILE_MODE = false;
-
     private TransactionUtil() {
     }
 
diff --git a/asterixdb/asterix-doc/src/site/markdown/ncservice.md b/asterixdb/asterix-doc/src/site/markdown/ncservice.md
index df30e7e..ab3ab88 100644
--- a/asterixdb/asterix-doc/src/site/markdown/ncservice.md
+++ b/asterixdb/asterix-doc/src/site/markdown/ncservice.md
@@ -257,31 +257,31 @@
 
 | Section | Parameter                                 | Meaning | Default |
 |---------|-------------------------------------------|---|---|
-|   cc    | active.port                               | The listen port of the active server | 19003   |
+|   cc    | active.port                               | The listen port of the active server | 19003 |
 |   cc    | address                                   | Default bind address for all services on this cluster controller | 127.0.0.1 |
-|   cc    | api.port                                  | The listen port of the API server | 19002   |
-|   cc    | app.class                                 | Application CC main class | org.apache.asterix.hyracks.bootstrap.CCApplicationEntryPoint |
+|   cc    | api.port                                  | The listen port of the API server | 19002 |
+|   cc    | app.class                                 | Application CC main class | org.apache.asterix.hyracks.bootstrap.CCApplication |
 |   cc    | client.listen.address                     | Sets the IP Address to listen for connections from clients | same as address |
-|   cc    | client.listen.port                        | Sets the port to listen for connections from clients | 1098    |
+|   cc    | client.listen.port                        | Sets the port to listen for connections from clients | 1098 |
 |   cc    | cluster.listen.address                    | Sets the IP Address to listen for connections from NCs | same as address |
-|   cc    | cluster.listen.port                       | Sets the port to listen for connections from node controllers | 1099    |
+|   cc    | cluster.listen.port                       | Sets the port to listen for connections from node controllers | 1099 |
 |   cc    | cluster.public.address                    | Address that NCs should use to contact this CC | same as cluster.listen.address |
 |   cc    | cluster.public.port                       | Port that NCs should use to contact this CC | same as cluster.listen.port |
 |   cc    | cluster.topology                          | Sets the XML file that defines the cluster topology | &lt;undefined&gt; |
 |   cc    | console.listen.address                    | Sets the listen address for the Cluster Controller | same as address |
-|   cc    | console.listen.port                       | Sets the http port for the Cluster Controller) | 16001   |
-|   cc    | heartbeat.max.misses                      | Sets the maximum number of missed heartbeats before a node is marked as dead | 5       |
-|   cc    | heartbeat.period                          | Sets the time duration between two heartbeats from each node controller in milliseconds | 10000   |
-|   cc    | job.history.size                          | Limits the number of historical jobs remembered by the system to the specified value | 10      |
+|   cc    | console.listen.port                       | Sets the http port for the Cluster Controller) | 16001 |
+|   cc    | heartbeat.max.misses                      | Sets the maximum number of missed heartbeats before a node is marked as dead | 5 |
+|   cc    | heartbeat.period                          | Sets the time duration between two heartbeats from each node controller in milliseconds | 10000 |
+|   cc    | job.history.size                          | Limits the number of historical jobs remembered by the system to the specified value | 10 |
 |   cc    | job.manager.class                         | Specify the implementation class name for the job manager | org.apache.hyracks.control.cc.job.JobManager |
-|   cc    | job.queue.capacity                        | The maximum number of jobs to queue before rejecting new jobs | 4096    |
+|   cc    | job.queue.capacity                        | The maximum number of jobs to queue before rejecting new jobs | 4096 |
 |   cc    | job.queue.class                           | Specify the implementation class name for the job queue | org.apache.hyracks.control.cc.scheduler.FIFOJobQueue |
-|   cc    | profile.dump.period                       | Sets the time duration between two profile dumps from each node controller in milliseconds; 0 to disable | 0       |
-|   cc    | result.sweep.threshold                    | The duration within which an instance of the result cleanup should be invoked in milliseconds | 60000   |
+|   cc    | profile.dump.period                       | Sets the time duration between two profile dumps from each node controller in milliseconds; 0 to disable | 0 |
+|   cc    | result.sweep.threshold                    | The duration within which an instance of the result cleanup should be invoked in milliseconds | 60000 |
 |   cc    | result.ttl                                | Limits the amount of time results for asynchronous jobs should be retained by the system in milliseconds | 86400000 |
 |   cc    | root.dir                                  | Sets the root folder used for file operations | ${java.io.tmpdir}/asterixdb/ClusterControllerService |
-|   cc    | web.port                                  | The listen port of the legacy query interface | 19001   |
-|   cc    | web.queryinterface.port                   | The listen port of the query web interface | 19006   |
+|   cc    | web.port                                  | The listen port of the legacy query interface | 19001 |
+|   cc    | web.queryinterface.port                   | The listen port of the query web interface | 19006 |
 
 
 The following parameters for slave processes, under "[nc]" sections.
@@ -289,45 +289,45 @@
 | Section | Parameter                                 | Meaning | Default |
 |---------|-------------------------------------------|---|---|
 |   nc    | address                                   | Default IP Address to bind listeners on this NC.  All services will bind on this address unless a service-specific listen address is supplied. | 127.0.0.1 |
-|   nc    | app.class                                 | Application NC Main Class | org.apache.asterix.hyracks.bootstrap.NCApplicationEntryPoint |
+|   nc    | app.class                                 | Application NC Main Class | org.apache.asterix.hyracks.bootstrap.NCApplication |
 |   nc    | cluster.address                           | Cluster Controller address (required unless specified in config file) | &lt;undefined&gt; |
-|   nc    | cluster.connect.retries                   | Number of attempts to contact CC before giving up | 5       |
+|   nc    | cluster.connect.retries                   | Number of attempts to contact CC before giving up | 5 |
 |   nc    | cluster.listen.address                    | IP Address to bind cluster listener on this NC | same as address |
-|   nc    | cluster.listen.port                       | IP port to bind cluster listener | 0       |
-|   nc    | cluster.port                              | Cluster Controller port | 1099    |
+|   nc    | cluster.listen.port                       | IP port to bind cluster listener | 0 |
+|   nc    | cluster.port                              | Cluster Controller port | 1099 |
 |   nc    | cluster.public.address                    | Public IP Address to announce cluster listener | same as public.address |
 |   nc    | cluster.public.port                       | Public IP port to announce cluster listener | same as cluster.listen.port |
 |   nc    | command                                   | Command NCService should invoke to start the NCDriver | hyracksnc |
 |   nc    | core.dump.dir                             | The directory where node core dumps should be written | ${java.io.tmpdir}/asterixdb/coredump |
 |   nc    | data.listen.address                       | IP Address to bind data listener | same as address |
-|   nc    | data.listen.port                          | IP port to bind data listener | 0       |
+|   nc    | data.listen.port                          | IP port to bind data listener | 0 |
 |   nc    | data.public.address                       | Public IP Address to announce data listener | same as public.address |
 |   nc    | data.public.port                          | Public IP port to announce data listener | same as data.listen.port |
 |   nc    | iodevices                                 | Comma separated list of IO Device mount points | ${java.io.tmpdir}/asterixdb/iodevice |
 |   nc    | jvm.args                                  | JVM args to pass to the NCDriver | &lt;undefined&gt; |
 |   nc    | messaging.listen.address                  | IP Address to bind messaging listener | same as address |
-|   nc    | messaging.listen.port                     | IP port to bind messaging listener | 0       |
+|   nc    | messaging.listen.port                     | IP port to bind messaging listener | 0 |
 |   nc    | messaging.public.address                  | Public IP Address to announce messaging listener | same as public.address |
 |   nc    | messaging.public.port                     | Public IP port to announce messaging listener | same as messaging.listen.port |
 |   nc    | ncservice.address                         | Address the CC should use to contact the NCService associated with this NC | same as public.address |
-|   nc    | ncservice.pid                             | PID of the NCService which launched this NCDriver | -1      |
-|   nc    | ncservice.port                            | Port the CC should use to contact the NCService associated with this NC | 9090    |
-|   nc    | net.buffer.count                          | Number of network buffers per input/output channel | 1       |
-|   nc    | net.thread.count                          | Number of threads to use for Network I/O | 1       |
+|   nc    | ncservice.pid                             | PID of the NCService which launched this NCDriver | -1 |
+|   nc    | ncservice.port                            | Port the CC should use to contact the NCService associated with this NC | 9090 |
+|   nc    | net.buffer.count                          | Number of network buffers per input/output channel | 1 |
+|   nc    | net.thread.count                          | Number of threads to use for Network I/O | 1 |
 |   nc    | public.address                            | Default public address that other processes should use to contact this NC.  All services will advertise this address unless a service-specific public address is supplied. | same as address |
 |   nc    | result.listen.address                     | IP Address to bind dataset result distribution listener | same as address |
-|   nc    | result.listen.port                        | IP port to bind dataset result distribution listener | 0       |
+|   nc    | result.listen.port                        | IP port to bind dataset result distribution listener | 0 |
 |   nc    | result.manager.memory                     | Memory usable for result caching at this Node Controller in bytes | -1 (-1 B) |
 |   nc    | result.public.address                     | Public IP Address to announce dataset result distribution listener | same as public.address |
 |   nc    | result.public.port                        | Public IP port to announce dataset result distribution listener | same as result.listen.port |
-|   nc    | result.sweep.threshold                    | The duration within which an instance of the result cleanup should be invoked in milliseconds | 60000   |
+|   nc    | result.sweep.threshold                    | The duration within which an instance of the result cleanup should be invoked in milliseconds | 60000 |
 |   nc    | result.ttl                                | Limits the amount of time results for asynchronous jobs should be retained by the system in milliseconds | 86400000 |
 |   nc    | storage.buffercache.maxopenfiles          | The maximum number of open files in the buffer cache | 2147483647 |
 |   nc    | storage.buffercache.pagesize              | The page size in bytes for pages in the buffer cache | 131072 (128 kB) |
 |   nc    | storage.buffercache.size                  | The size of memory allocated to the disk buffer cache.  The value should be a multiple of the buffer cache page size. | 715915264 (682.75 MB) |
-|   nc    | storage.lsm.bloomfilter.falsepositiverate | The maximum acceptable false positive rate for bloom filters associated with LSM indexes | 0.01    |
+|   nc    | storage.lsm.bloomfilter.falsepositiverate | The maximum acceptable false positive rate for bloom filters associated with LSM indexes | 0.01 |
 |   nc    | storage.memorycomponent.globalbudget      | The size of memory allocated to the memory components.  The value should be a multiple of the memory component page size | 715915264 (682.75 MB) |
-|   nc    | storage.memorycomponent.numcomponents     | The number of memory components to be used per lsm index | 2       |
+|   nc    | storage.memorycomponent.numcomponents     | The number of memory components to be used per lsm index | 2 |
 |   nc    | storage.memorycomponent.numpages          | The number of pages to allocate for a memory component.  This budget is shared by all the memory components of the primary index and all its secondary indexes across all I/O devices on a node.  Note: in-memory components usually has fill factor of 75% since the pages are 75% full and the remaining 25% is un-utilized | 1/16th of the storage.memorycomponent.globalbudget value |
 |   nc    | storage.memorycomponent.pagesize          | The page size in bytes for pages allocated to memory components | 131072 (128 kB) |
 |   nc    | storage.metadata.memorycomponent.numpages | The number of pages to allocate for a metadata memory component | 1/64th of the storage.memorycomponent.globalbudget value or 256, whichever is larger |
@@ -343,35 +343,36 @@
 | common  | compiler.framesize                        | The page size (in bytes) for computation | 32768 (32 kB) |
 | common  | compiler.groupmemory                      | The memory budget (in bytes) for a group by operator instance in a partition | 33554432 (32 MB) |
 | common  | compiler.joinmemory                       | The memory budget (in bytes) for a join operator instance in a partition | 33554432 (32 MB) |
-| common  | compiler.parallelism                      | The degree of parallelism for query execution. Zero means to use the storage parallelism as the query execution parallelism, while other integer values dictate the number of query execution parallel partitions. The system will fall back to use the number of all available CPU cores in the cluster as the degree of parallelism if the number set by a user is too large or too small | 0       |
+| common  | compiler.parallelism                      | The degree of parallelism for query execution. Zero means to use the storage parallelism as the query execution parallelism, while other integer values dictate the number of query execution parallel partitions. The system will fall back to use the number of all available CPU cores in the cluster as the degree of parallelism if the number set by a user is too large or too small | 0 |
 | common  | compiler.sortmemory                       | The memory budget (in bytes) for a sort operator instance in a partition | 33554432 (32 MB) |
 | common  | instance.name                             | The name of this cluster instance | DEFAULT_INSTANCE |
 | common  | log.level                                 | The logging level for master and slave processes | WARNING |
-| common  | max.wait.active.cluster                   | The max pending time (in seconds) for cluster startup. After the threshold, if the cluster still is not up and running, it is considered unavailable | 60      |
-| common  | messaging.frame.count                     | N/A     | 512     |
-| common  | messaging.frame.size                      | N/A     | 4096 (4 kB) |
-| common  | metadata.callback.port                    | IP port to bind metadata callback listener (0 = random port) | 0       |
-| common  | metadata.listen.port                      | IP port to bind metadata listener (0 = random port) | 0       |
+| common  | max.wait.active.cluster                   | The max pending time (in seconds) for cluster startup. After the threshold, if the cluster still is not up and running, it is considered unavailable | 60 |
+| common  | messaging.frame.count                     | Number of reusable frames for NC to NC messaging | 512 |
+| common  | messaging.frame.size                      | The frame size to be used for NC to NC messaging | 4096 (4 kB) |
+| common  | metadata.callback.port                    | IP port to bind metadata callback listener (0 = random port) | 0 |
+| common  | metadata.listen.port                      | IP port to bind metadata listener (0 = random port) | 0 |
 | common  | metadata.node                             | the node which should serve as the metadata node | &lt;undefined&gt; |
-| common  | metadata.registration.timeout.secs        | how long in seconds to wait for the metadata node to register with the CC | 60      |
-| common  | plot.activate                             | N/A     | false   |
-| common  | replication.log.batchsize                 | N/A     | 4096 (4 kB) |
-| common  | replication.log.buffer.numpages           | N/A     | 8       |
-| common  | replication.log.buffer.pagesize           | N/A     | 131072 (128 kB) |
-| common  | replication.max.remote.recovery.attempts  | N/A     | 5       |
-| common  | replication.timeout                       | N/A     | 15      |
-| common  | txn.commitprofiler.reportinterval         | N/A     | 5       |
+| common  | metadata.registration.timeout.secs        | how long in seconds to wait for the metadata node to register with the CC | 60 |
+| common  | plot.activate                             | N/A | false |
+| common  | replication.log.batchsize                 | The size in bytes to replicate in each batch | 4096 (4 kB) |
+| common  | replication.log.buffer.numpages           | The number of log buffer pages | 8 |
+| common  | replication.log.buffer.pagesize           | The size in bytes of each log buffer page | 131072 (128 kB) |
+| common  | replication.max.remote.recovery.attempts  | The maximum numbe of times to attempt to recover from a replica on failure before giving up | 5 |
+| common  | replication.timeout                       | The time in seconds to timeout when trying to contact a replica, before assuming it is dead | 15 |
+| common  | txn.commitprofiler.enabled                | Enable output of commit profiler logs | false |
+| common  | txn.commitprofiler.reportinterval         | Interval (in seconds) to report commit profiler logs | 5 |
 | common  | txn.job.recovery.memorysize               | The memory budget (in bytes) used for recovery | 67108864 (64 MB) |
-| common  | txn.lock.escalationthreshold              | N/A     | 1000    |
-| common  | txn.lock.shrinktimer                      | N/A     | 5000    |
-| common  | txn.lock.timeout.sweepthreshold           | Interval (in milliseconds) for checking lock timeout | 10000   |
-| common  | txn.lock.timeout.waitthreshold            | Time out (in milliseconds) of waiting for a lock | 60000   |
-| common  | txn.log.buffer.numpages                   | The number of pages in the transaction log tail | 8       |
+| common  | txn.lock.escalationthreshold              | The maximum number of entity locks to obtain before upgrading to a dataset lock | 1000 |
+| common  | txn.lock.shrinktimer                      | The time (in milliseconds) where under utilization of resources will trigger a shrink phase | 5000 |
+| common  | txn.lock.timeout.sweepthreshold           | Interval (in milliseconds) for checking lock timeout | 10000 |
+| common  | txn.lock.timeout.waitthreshold            | Time out (in milliseconds) of waiting for a lock | 60000 |
+| common  | txn.log.buffer.numpages                   | The number of pages in the transaction log tail | 8 |
 | common  | txn.log.buffer.pagesize                   | The page size (in bytes) for transaction log buffer | 131072 (128 kB) |
-| common  | txn.log.checkpoint.history                | The number of checkpoints to keep in the transaction log | 0       |
+| common  | txn.log.checkpoint.history                | The number of checkpoints to keep in the transaction log | 0 |
 | common  | txn.log.checkpoint.lsnthreshold           | The checkpoint threshold (in terms of LSNs (log sequence numbers) that have been written to the transaction log, i.e., the length of the transaction log) for transaction logs | 67108864 (64 MB) |
-| common  | txn.log.checkpoint.pollfrequency          | N/A     | 120     |
-| common  | txn.log.partitionsize                     | N/A     | 268435456 (256 MB) |
+| common  | txn.log.checkpoint.pollfrequency          | The frequency (in seconds) the checkpoint thread should check to see if a checkpoint should be written | 120 |
+| common  | txn.log.partitionsize                     | The maximum size (in bytes) of each transaction log file | 268435456 (256 MB) |
 
 
 For the optional NCService process configuration file, the following parameters, under "[ncservice]" section.
diff --git a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/recovery/RemoteRecoveryManager.java b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/recovery/RemoteRecoveryManager.java
index fcc997f..7441ec7 100644
--- a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/recovery/RemoteRecoveryManager.java
+++ b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/recovery/RemoteRecoveryManager.java
@@ -169,7 +169,7 @@
         PersistentLocalResourceRepository resourceRepository = (PersistentLocalResourceRepository) runtimeContext
                 .getLocalResourceRepository();
         IDatasetLifecycleManager datasetLifeCycleManager = runtimeContext.getDatasetLifecycleManager();
-        Map<String, ClusterPartition[]> nodePartitions = ((IPropertiesProvider) runtimeContext).getMetadataProperties()
+        Map<String, ClusterPartition[]> nodePartitions = runtimeContext.getMetadataProperties()
                 .getNodePartitions();
 
         while (true) {
diff --git a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/logging/LogBuffer.java b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/logging/LogBuffer.java
index efcff05..7b5d8ee 100644
--- a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/logging/LogBuffer.java
+++ b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/logging/LogBuffer.java
@@ -262,7 +262,7 @@
                         txnSubsystem.getLockManager().unlock(reusableDatasetId, logRecord.getPKHashValue(),
                                 LockMode.ANY, txnCtx);
                         txnCtx.notifyOptracker(false);
-                        if (TransactionUtil.PROFILE_MODE) {
+                        if (txnSubsystem.getTransactionProperties().isCommitProfilerEnabled()) {
                             txnSubsystem.incrementEntityCommitCount();
                         }
                     } else if (logRecord.getLogType() == LogType.JOB_COMMIT

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/1589
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I04826591133e7e8283b7288e14324659fd831954
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Michael Blow <mb...@apache.org>


Change in asterixdb[master]: Add Missing Descriptions For Config Options

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: Add Missing Descriptions For Config Options
......................................................................


Patch Set 2:

Integration Tests Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-integration-tests/2222/

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/1589
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I04826591133e7e8283b7288e14324659fd831954
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-HasComments: No

Change in asterixdb[master]: Add Missing Descriptions For Config Options

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: Add Missing Descriptions For Config Options
......................................................................


Patch Set 2: BAD-1

BAD Compatibility Tests Failed

https://asterix-jenkins.ics.uci.edu/job/asterixbad-compat/823/ : FAILURE

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/1589
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I04826591133e7e8283b7288e14324659fd831954
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-HasComments: No

Change in asterixdb[master]: Add Missing Descriptions For Config Options

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: Add Missing Descriptions For Config Options
......................................................................


Patch Set 2:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-notopic/4718/ (1/3)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/1589
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I04826591133e7e8283b7288e14324659fd831954
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-HasComments: No

Change in asterixdb[master]: Add Missing Descriptions For Config Options

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: Add Missing Descriptions For Config Options
......................................................................


Patch Set 2:

BAD Compatibility Tests Started https://asterix-jenkins.ics.uci.edu/job/asterixbad-compat/823/

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/1589
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I04826591133e7e8283b7288e14324659fd831954
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-HasComments: No

Change in asterixdb[master]: Add Missing Descriptions For Config Options

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: Add Missing Descriptions For Config Options
......................................................................


Patch Set 1: Integration-Tests+1

Integration Tests Successful

https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-integration-tests/2219/ : SUCCESS

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/1589
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I04826591133e7e8283b7288e14324659fd831954
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-HasComments: No

Change in asterixdb[master]: Add Missing Descriptions For Config Options

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: Add Missing Descriptions For Config Options
......................................................................


Patch Set 1:

BAD Compatibility Tests Started https://asterix-jenkins.ics.uci.edu/job/asterixbad-compat/821/

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/1589
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I04826591133e7e8283b7288e14324659fd831954
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: Add Missing Descriptions For Config Options

Posted by "Michael Blow (Code Review)" <do...@asterixdb.incubator.apache.org>.
Michael Blow has posted comments on this change.

Change subject: Add Missing Descriptions For Config Options
......................................................................


Patch Set 2: Code-Review+2

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/1589
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I04826591133e7e8283b7288e14324659fd831954
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-HasComments: No

Change in asterixdb[master]: Add Missing Descriptions For Config Options

Posted by "Michael Blow (Code Review)" <do...@asterixdb.incubator.apache.org>.
Michael Blow has posted comments on this change.

Change subject: Add Missing Descriptions For Config Options
......................................................................


Patch Set 2: Verified+1

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/1589
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I04826591133e7e8283b7288e14324659fd831954
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-HasComments: No

Change in asterixdb[master]: Add Missing Descriptions For Config Options

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: Add Missing Descriptions For Config Options
......................................................................


Patch Set 1:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-notopic/4716/ (1/3)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/1589
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I04826591133e7e8283b7288e14324659fd831954
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: Add Missing Descriptions For Config Options

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: Add Missing Descriptions For Config Options
......................................................................


Patch Set 1:

Integration Tests Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-integration-tests/2219/

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/1589
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I04826591133e7e8283b7288e14324659fd831954
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: Add Missing Descriptions For Config Options

Posted by "Michael Blow (Code Review)" <do...@asterixdb.incubator.apache.org>.
Hello Till Westmann, Jenkins,

I'd like you to reexamine a change.  Please visit

    https://asterix-gerrit.ics.uci.edu/1589

to look at the new patch set (#2).

Change subject: Add Missing Descriptions For Config Options
......................................................................

Add Missing Descriptions For Config Options

Also, expose knob for enabling transaction commit profile logs as config
option

Change-Id: I04826591133e7e8283b7288e14324659fd831954
---
M asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/TransactionSubsystem.java
M asterixdb/asterix-app/src/test/java/org/apache/asterix/common/config/ConfigUsageTest.java
M asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1/cluster_state_1.1.adm
M asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_full/cluster_state_1_full.1.adm
M asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_less/cluster_state_1_less.1.adm
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/MessagingProperties.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/ReplicationProperties.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/TransactionProperties.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/utils/TransactionUtil.java
M asterixdb/asterix-doc/src/site/markdown/ncservice.md
M asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/recovery/RemoteRecoveryManager.java
M asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/logging/LogBuffer.java
12 files changed, 99 insertions(+), 81 deletions(-)


  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/89/1589/2
-- 
To view, visit https://asterix-gerrit.ics.uci.edu/1589
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I04826591133e7e8283b7288e14324659fd831954
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>

Change in asterixdb[master]: Add Missing Descriptions For Config Options

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: Add Missing Descriptions For Config Options
......................................................................


Patch Set 2:

BAD Compatibility Tests Failed

https://asterix-jenkins.ics.uci.edu/job/asterixbad-compat/824/ : FAILURE

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/1589
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I04826591133e7e8283b7288e14324659fd831954
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-HasComments: No

Change in asterixdb[master]: Add Missing Descriptions For Config Options

Posted by "Till Westmann (Code Review)" <do...@asterixdb.incubator.apache.org>.
Till Westmann has posted comments on this change.

Change subject: Add Missing Descriptions For Config Options
......................................................................


Patch Set 1: Code-Review+2

(2 comments)

One typo that should be fixed before merging.

https://asterix-gerrit.ics.uci.edu/#/c/1589/1/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/ReplicationProperties.java
File asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/ReplicationProperties.java:

PS1, Line 43: numbe
s/numbe/number/


https://asterix-gerrit.ics.uci.edu/#/c/1589/1/asterixdb/asterix-doc/src/site/markdown/ncservice.md
File asterixdb/asterix-doc/src/site/markdown/ncservice.md:

PS1, Line 361: numbe
s/numbe/number/


-- 
To view, visit https://asterix-gerrit.ics.uci.edu/1589
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I04826591133e7e8283b7288e14324659fd831954
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-HasComments: Yes

Change in asterixdb[master]: Add Missing Descriptions For Config Options

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: Add Missing Descriptions For Config Options
......................................................................


Patch Set 2:

Integration Tests Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-integration-tests/2221/

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/1589
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I04826591133e7e8283b7288e14324659fd831954
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-HasComments: No

Change in asterixdb[master]: Add Missing Descriptions For Config Options

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: Add Missing Descriptions For Config Options
......................................................................


Patch Set 2: Integration-Tests-1

Integration Tests Timed Out

https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-integration-tests/2221/ : ABORTED

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/1589
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I04826591133e7e8283b7288e14324659fd831954
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-HasComments: No

Change in asterixdb[master]: Add Missing Descriptions For Config Options

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: Add Missing Descriptions For Config Options
......................................................................


Patch Set 2:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-asterix-app/40/ (2/3)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/1589
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I04826591133e7e8283b7288e14324659fd831954
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-HasComments: No

Change in asterixdb[master]: Add Missing Descriptions For Config Options

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: Add Missing Descriptions For Config Options
......................................................................


Patch Set 1: BAD+1

BAD Compatibility Tests Successful

https://asterix-jenkins.ics.uci.edu/job/asterixbad-compat/821/ : SUCCESS

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/1589
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I04826591133e7e8283b7288e14324659fd831954
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: Add Missing Descriptions For Config Options

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: Add Missing Descriptions For Config Options
......................................................................


Patch Set 1:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-asterix-app/38/ (2/3)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/1589
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I04826591133e7e8283b7288e14324659fd831954
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: Add Missing Descriptions For Config Options

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: Add Missing Descriptions For Config Options
......................................................................


Patch Set 2:

BAD Compatibility Tests Started https://asterix-jenkins.ics.uci.edu/job/asterixbad-compat/824/

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/1589
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I04826591133e7e8283b7288e14324659fd831954
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-HasComments: No

Change in asterixdb[master]: Add Missing Descriptions For Config Options

Posted by "Michael Blow (Code Review)" <do...@asterixdb.incubator.apache.org>.
Michael Blow has submitted this change and it was merged.

Change subject: Add Missing Descriptions For Config Options
......................................................................


Add Missing Descriptions For Config Options

Also, expose knob for enabling transaction commit profile logs as config
option

Change-Id: I04826591133e7e8283b7288e14324659fd831954
Reviewed-on: https://asterix-gerrit.ics.uci.edu/1589
Tested-by: Michael Blow <mb...@apache.org>
Reviewed-by: Michael Blow <mb...@apache.org>
---
M asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/TransactionSubsystem.java
M asterixdb/asterix-app/src/test/java/org/apache/asterix/common/config/ConfigUsageTest.java
M asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1/cluster_state_1.1.adm
M asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_full/cluster_state_1_full.1.adm
M asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_less/cluster_state_1_less.1.adm
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/MessagingProperties.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/ReplicationProperties.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/TransactionProperties.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/utils/TransactionUtil.java
M asterixdb/asterix-doc/src/site/markdown/ncservice.md
M asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/recovery/RemoteRecoveryManager.java
M asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/logging/LogBuffer.java
12 files changed, 99 insertions(+), 81 deletions(-)

Approvals:
  Michael Blow: Looks good to me, approved; Verified



diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/TransactionSubsystem.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/TransactionSubsystem.java
index 88311c5..ec1a386 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/TransactionSubsystem.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/TransactionSubsystem.java
@@ -21,7 +21,6 @@
 import java.util.concurrent.Callable;
 import java.util.logging.Logger;
 
-import org.apache.asterix.common.config.IPropertiesProvider;
 import org.apache.asterix.common.config.ReplicationProperties;
 import org.apache.asterix.common.config.TransactionProperties;
 import org.apache.asterix.common.exceptions.ACIDException;
@@ -36,7 +35,6 @@
 import org.apache.asterix.common.transactions.ITransactionManager;
 import org.apache.asterix.common.transactions.ITransactionSubsystem;
 import org.apache.asterix.common.utils.StorageConstants;
-import org.apache.asterix.common.utils.TransactionUtil;
 import org.apache.asterix.transaction.management.service.locking.ConcurrentLockManager;
 import org.apache.asterix.transaction.management.service.logging.LogManager;
 import org.apache.asterix.transaction.management.service.logging.LogManagerWithReplication;
@@ -70,8 +68,8 @@
         this.txnProperties = txnProperties;
         this.transactionManager = new TransactionManager(this);
         this.lockManager = new ConcurrentLockManager(txnProperties.getLockManagerShrinkTimer());
-        ReplicationProperties repProperties = ((IPropertiesProvider) asterixAppRuntimeContextProvider
-                .getAppContext()).getReplicationProperties();
+        ReplicationProperties repProperties = asterixAppRuntimeContextProvider.getAppContext()
+                .getReplicationProperties();
         IReplicationStrategy replicationStrategy = repProperties.getReplicationStrategy();
         final boolean replicationEnabled = repProperties.isParticipant(id);
 
@@ -91,7 +89,7 @@
         }
         this.recoveryManager = new RecoveryManager(this, serviceCtx);
 
-        if (TransactionUtil.PROFILE_MODE) {
+        if (this.txnProperties.isCommitProfilerEnabled()) {
             ecp = new EntityCommitProfiler(this, this.txnProperties.getCommitProfilerReportInterval());
             getAsterixAppRuntimeContextProvider().getThreadExecutor().submit(ecp);
         }
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/common/config/ConfigUsageTest.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/common/config/ConfigUsageTest.java
index 6a8dabf..acd4540 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/common/config/ConfigUsageTest.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/common/config/ConfigUsageTest.java
@@ -124,14 +124,15 @@
         // output header
         for (Column column : columns) {
             buf.append(column.ordinal() == 0 ? startDelim : midDelim);
-            pad(buf, StringUtils.capitalize(column.name().toLowerCase()), calculateMaxWidth(column, column.name()));
+            pad(buf, StringUtils.capitalize(column.name().toLowerCase()),
+                    align.computeIfAbsent(column, c -> false) ? calculateMaxWidth(column, column.name()) : 0);
         }
         buf.append(endDelim).append('\n');
 
         StringBuilder sepLine = new StringBuilder();
         for (Column column : columns) {
             sepLine.append(column.ordinal() == 0 ? startDelim : midDelim);
-            pad(sepLine, "", maxWidths.get(column), '-');
+            pad(sepLine, "", maxWidths.getOrDefault(column, 0), '-');
         }
         sepLine.append(endDelim).append('\n');
         buf.append(sepLine.toString().replace(' ', '-'));
@@ -143,9 +144,9 @@
                 for (Column column : columns) {
                     buf.append(column.ordinal() == 0 ? startDelim : midDelim);
                     if (column == Column.SECTION) {
-                        center(buf, extractValue(column, option), maxWidths.get(column));
+                        center(buf, extractValue(column, option), maxWidths.getOrDefault(column, 0));
                     } else {
-                        pad(buf, extractValue(column, option), maxWidths.get(column));
+                        pad(buf, extractValue(column, option), maxWidths.getOrDefault(column, 0));
                     }
                 }
                 buf.append(endDelim).append('\n');
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1/cluster_state_1.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1/cluster_state_1.1.adm
index bb241ba..aebf817 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1/cluster_state_1.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1/cluster_state_1.1.adm
@@ -26,6 +26,7 @@
     "replication.log.buffer.pagesize" : 131072,
     "replication.max.remote.recovery.attempts" : 5,
     "replication.timeout" : 30,
+    "txn.commitprofiler.enabled" : false,
     "txn.commitprofiler.reportinterval" : 5,
     "txn.job.recovery.memorysize" : 67108864,
     "txn.lock.escalationthreshold" : 1000,
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_full/cluster_state_1_full.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_full/cluster_state_1_full.1.adm
index 3ee13c9..47ea9d6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_full/cluster_state_1_full.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_full/cluster_state_1_full.1.adm
@@ -26,6 +26,7 @@
     "replication.log.buffer.pagesize" : 131072,
     "replication.max.remote.recovery.attempts" : 5,
     "replication.timeout" : 30,
+    "txn.commitprofiler.enabled" : false,
     "txn.commitprofiler.reportinterval" : 5,
     "txn.job.recovery.memorysize" : 67108864,
     "txn.lock.escalationthreshold" : 1000,
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_less/cluster_state_1_less.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_less/cluster_state_1_less.1.adm
index 64d2f94..b39ccd7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_less/cluster_state_1_less.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_less/cluster_state_1_less.1.adm
@@ -26,6 +26,7 @@
     "replication.log.buffer.pagesize" : 131072,
     "replication.max.remote.recovery.attempts" : 5,
     "replication.timeout" : 30,
+    "txn.commitprofiler.enabled" : false,
     "txn.commitprofiler.reportinterval" : 5,
     "txn.job.recovery.memorysize" : 67108864,
     "txn.lock.escalationthreshold" : 1000,
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/MessagingProperties.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/MessagingProperties.java
index 8097b5f..6a96546 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/MessagingProperties.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/MessagingProperties.java
@@ -30,15 +30,18 @@
 public class MessagingProperties extends AbstractProperties {
 
     public enum Option implements IOption {
-        MESSAGING_FRAME_SIZE(INTEGER_BYTE_UNIT, StorageUtil.getIntSizeInBytes(4, KILOBYTE)),
-        MESSAGING_FRAME_COUNT(INTEGER, 512);
+        MESSAGING_FRAME_SIZE(INTEGER_BYTE_UNIT, StorageUtil.getIntSizeInBytes(4, KILOBYTE),
+                "The frame size to be used for NC to NC messaging"),
+        MESSAGING_FRAME_COUNT(INTEGER, 512, "Number of reusable frames for NC to NC messaging");
 
         private final IOptionType type;
         private final Object defaultValue;
+        private final String description;
 
-        Option(IOptionType type, Object defaultValue) {
+        Option(IOptionType type, Object defaultValue, String description) {
             this.type = type;
             this.defaultValue = defaultValue;
+            this.description = description;
         }
 
         @Override
@@ -48,8 +51,7 @@
 
         @Override
         public String description() {
-            // TODO(mblow): add missing descriptions
-            return null;
+            return description;
         }
 
         @Override
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/ReplicationProperties.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/ReplicationProperties.java
index efa5296..1e79a26 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/ReplicationProperties.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/ReplicationProperties.java
@@ -39,20 +39,25 @@
 public class ReplicationProperties extends AbstractProperties {
 
     public enum Option implements IOption {
-        REPLICATION_MAX_REMOTE_RECOVERY_ATTEMPTS(INTEGER, 5),
+        REPLICATION_MAX_REMOTE_RECOVERY_ATTEMPTS(INTEGER, 5,
+                "The maximum number of times to attempt to recover from a replica on failure before giving up"),
         REPLICATION_LOG_BUFFER_PAGESIZE(INTEGER_BYTE_UNIT, StorageUtil.getIntSizeInBytes(128,
-                StorageUnit.KILOBYTE)),
-        REPLICATION_LOG_BUFFER_NUMPAGES(INTEGER, 8),
-        REPLICATION_LOG_BATCHSIZE(INTEGER_BYTE_UNIT, StorageUtil.getIntSizeInBytes(4, StorageUnit.KILOBYTE)),
-        REPLICATION_TIMEOUT(INTEGER, REPLICATION_TIME_OUT_DEFAULT),
+                StorageUnit.KILOBYTE), "The size in bytes of each log buffer page"),
+        REPLICATION_LOG_BUFFER_NUMPAGES(INTEGER, 8, "The number of log buffer pages"),
+        REPLICATION_LOG_BATCHSIZE(INTEGER_BYTE_UNIT, StorageUtil.getIntSizeInBytes(4, StorageUnit.KILOBYTE),
+                "The size in bytes to replicate in each batch"),
+        REPLICATION_TIMEOUT(INTEGER, REPLICATION_TIME_OUT_DEFAULT,
+                "The time in seconds to timeout when trying to contact a replica, before assuming it is dead"),
         ;
 
         private final IOptionType type;
         private final Object defaultValue;
+        private final String description;
 
-        Option(IOptionType type, Object defaultValue) {
+        Option(IOptionType type, Object defaultValue, String description) {
             this.type = type;
             this.defaultValue = defaultValue;
+            this.description = description;
         }
 
         @Override
@@ -62,8 +67,7 @@
 
         @Override
         public String description() {
-            // TODO(mblow): add missing descriptions
-            return null;
+            return description;
         }
 
         @Override
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/TransactionProperties.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/TransactionProperties.java
index 97ad6be..b809b4d 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/TransactionProperties.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/TransactionProperties.java
@@ -18,6 +18,7 @@
  */
 package org.apache.asterix.common.config;
 
+import static org.apache.hyracks.control.common.config.OptionTypes.BOOLEAN;
 import static org.apache.hyracks.control.common.config.OptionTypes.INTEGER;
 import static org.apache.hyracks.control.common.config.OptionTypes.INTEGER_BYTE_UNIT;
 import static org.apache.hyracks.control.common.config.OptionTypes.LONG_BYTE_UNIT;
@@ -37,17 +38,23 @@
         TXN_LOG_BUFFER_NUMPAGES(INTEGER, 8, "The number of pages in the transaction log tail"),
         TXN_LOG_BUFFER_PAGESIZE(INTEGER_BYTE_UNIT, StorageUtil.getIntSizeInBytes(128, KILOBYTE),
                 "The page size (in bytes) for transaction log buffer"),
-        TXN_LOG_PARTITIONSIZE(LONG_BYTE_UNIT, StorageUtil.getLongSizeInBytes(256L, MEGABYTE), null),
+        TXN_LOG_PARTITIONSIZE(LONG_BYTE_UNIT, StorageUtil.getLongSizeInBytes(256L, MEGABYTE),
+                "The maximum size (in bytes) of each transaction log file"),
         TXN_LOG_CHECKPOINT_LSNTHRESHOLD(INTEGER_BYTE_UNIT, StorageUtil.getIntSizeInBytes(64, MEGABYTE),
                 "The checkpoint threshold (in terms of LSNs (log sequence numbers) that have been written to the " +
                         "transaction log, i.e., the length of the transaction log) for transaction logs"),
-        TXN_LOG_CHECKPOINT_POLLFREQUENCY(INTEGER, 120, null),
+        TXN_LOG_CHECKPOINT_POLLFREQUENCY(INTEGER, 120,
+                "The frequency (in seconds) the checkpoint thread should check to see if a checkpoint should be written"
+        ),
         TXN_LOG_CHECKPOINT_HISTORY(INTEGER, 0, "The number of checkpoints to keep in the transaction log"),
-        TXN_LOCK_ESCALATIONTHRESHOLD(INTEGER, 1000, null),
-        TXN_LOCK_SHRINKTIMER(INTEGER, 5000, null),
+        TXN_LOCK_ESCALATIONTHRESHOLD(INTEGER, 1000,
+                "The maximum number of entity locks to obtain before upgrading to a dataset lock"),
+        TXN_LOCK_SHRINKTIMER(INTEGER, 5000,
+                "The time (in milliseconds) where under utilization of resources will trigger a shrink phase"),
         TXN_LOCK_TIMEOUT_WAITTHRESHOLD(INTEGER, 60000, "Time out (in milliseconds) of waiting for a lock"),
         TXN_LOCK_TIMEOUT_SWEEPTHRESHOLD(INTEGER, 10000, "Interval (in milliseconds) for checking lock timeout"),
-        TXN_COMMITPROFILER_REPORTINTERVAL(INTEGER, 5, null),
+        TXN_COMMITPROFILER_ENABLED(BOOLEAN, false, "Enable output of commit profiler logs"),
+        TXN_COMMITPROFILER_REPORTINTERVAL(INTEGER, 5, "Interval (in seconds) to report commit profiler logs"),
         TXN_JOB_RECOVERY_MEMORYSIZE(LONG_BYTE_UNIT, StorageUtil.getLongSizeInBytes(64L, MEGABYTE),
                 "The memory budget (in bytes) used for recovery");
 
@@ -138,6 +145,10 @@
         return accessor.getInt(Option.TXN_LOCK_TIMEOUT_SWEEPTHRESHOLD);
     }
 
+    public boolean isCommitProfilerEnabled() {
+        return accessor.getBoolean(Option.TXN_COMMITPROFILER_ENABLED);
+    }
+
     public int getCommitProfilerReportInterval() {
         return accessor.getInt(Option.TXN_COMMITPROFILER_REPORTINTERVAL);
     }
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/utils/TransactionUtil.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/utils/TransactionUtil.java
index 4ba35ae..e9f96f9 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/utils/TransactionUtil.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/utils/TransactionUtil.java
@@ -29,8 +29,6 @@
 
 public class TransactionUtil {
 
-    public static final boolean PROFILE_MODE = false;
-
     private TransactionUtil() {
     }
 
diff --git a/asterixdb/asterix-doc/src/site/markdown/ncservice.md b/asterixdb/asterix-doc/src/site/markdown/ncservice.md
index df30e7e..cd19db6 100644
--- a/asterixdb/asterix-doc/src/site/markdown/ncservice.md
+++ b/asterixdb/asterix-doc/src/site/markdown/ncservice.md
@@ -257,31 +257,31 @@
 
 | Section | Parameter                                 | Meaning | Default |
 |---------|-------------------------------------------|---|---|
-|   cc    | active.port                               | The listen port of the active server | 19003   |
+|   cc    | active.port                               | The listen port of the active server | 19003 |
 |   cc    | address                                   | Default bind address for all services on this cluster controller | 127.0.0.1 |
-|   cc    | api.port                                  | The listen port of the API server | 19002   |
-|   cc    | app.class                                 | Application CC main class | org.apache.asterix.hyracks.bootstrap.CCApplicationEntryPoint |
+|   cc    | api.port                                  | The listen port of the API server | 19002 |
+|   cc    | app.class                                 | Application CC main class | org.apache.asterix.hyracks.bootstrap.CCApplication |
 |   cc    | client.listen.address                     | Sets the IP Address to listen for connections from clients | same as address |
-|   cc    | client.listen.port                        | Sets the port to listen for connections from clients | 1098    |
+|   cc    | client.listen.port                        | Sets the port to listen for connections from clients | 1098 |
 |   cc    | cluster.listen.address                    | Sets the IP Address to listen for connections from NCs | same as address |
-|   cc    | cluster.listen.port                       | Sets the port to listen for connections from node controllers | 1099    |
+|   cc    | cluster.listen.port                       | Sets the port to listen for connections from node controllers | 1099 |
 |   cc    | cluster.public.address                    | Address that NCs should use to contact this CC | same as cluster.listen.address |
 |   cc    | cluster.public.port                       | Port that NCs should use to contact this CC | same as cluster.listen.port |
 |   cc    | cluster.topology                          | Sets the XML file that defines the cluster topology | &lt;undefined&gt; |
 |   cc    | console.listen.address                    | Sets the listen address for the Cluster Controller | same as address |
-|   cc    | console.listen.port                       | Sets the http port for the Cluster Controller) | 16001   |
-|   cc    | heartbeat.max.misses                      | Sets the maximum number of missed heartbeats before a node is marked as dead | 5       |
-|   cc    | heartbeat.period                          | Sets the time duration between two heartbeats from each node controller in milliseconds | 10000   |
-|   cc    | job.history.size                          | Limits the number of historical jobs remembered by the system to the specified value | 10      |
+|   cc    | console.listen.port                       | Sets the http port for the Cluster Controller) | 16001 |
+|   cc    | heartbeat.max.misses                      | Sets the maximum number of missed heartbeats before a node is marked as dead | 5 |
+|   cc    | heartbeat.period                          | Sets the time duration between two heartbeats from each node controller in milliseconds | 10000 |
+|   cc    | job.history.size                          | Limits the number of historical jobs remembered by the system to the specified value | 10 |
 |   cc    | job.manager.class                         | Specify the implementation class name for the job manager | org.apache.hyracks.control.cc.job.JobManager |
-|   cc    | job.queue.capacity                        | The maximum number of jobs to queue before rejecting new jobs | 4096    |
+|   cc    | job.queue.capacity                        | The maximum number of jobs to queue before rejecting new jobs | 4096 |
 |   cc    | job.queue.class                           | Specify the implementation class name for the job queue | org.apache.hyracks.control.cc.scheduler.FIFOJobQueue |
-|   cc    | profile.dump.period                       | Sets the time duration between two profile dumps from each node controller in milliseconds; 0 to disable | 0       |
-|   cc    | result.sweep.threshold                    | The duration within which an instance of the result cleanup should be invoked in milliseconds | 60000   |
+|   cc    | profile.dump.period                       | Sets the time duration between two profile dumps from each node controller in milliseconds; 0 to disable | 0 |
+|   cc    | result.sweep.threshold                    | The duration within which an instance of the result cleanup should be invoked in milliseconds | 60000 |
 |   cc    | result.ttl                                | Limits the amount of time results for asynchronous jobs should be retained by the system in milliseconds | 86400000 |
 |   cc    | root.dir                                  | Sets the root folder used for file operations | ${java.io.tmpdir}/asterixdb/ClusterControllerService |
-|   cc    | web.port                                  | The listen port of the legacy query interface | 19001   |
-|   cc    | web.queryinterface.port                   | The listen port of the query web interface | 19006   |
+|   cc    | web.port                                  | The listen port of the legacy query interface | 19001 |
+|   cc    | web.queryinterface.port                   | The listen port of the query web interface | 19006 |
 
 
 The following parameters for slave processes, under "[nc]" sections.
@@ -289,45 +289,45 @@
 | Section | Parameter                                 | Meaning | Default |
 |---------|-------------------------------------------|---|---|
 |   nc    | address                                   | Default IP Address to bind listeners on this NC.  All services will bind on this address unless a service-specific listen address is supplied. | 127.0.0.1 |
-|   nc    | app.class                                 | Application NC Main Class | org.apache.asterix.hyracks.bootstrap.NCApplicationEntryPoint |
+|   nc    | app.class                                 | Application NC Main Class | org.apache.asterix.hyracks.bootstrap.NCApplication |
 |   nc    | cluster.address                           | Cluster Controller address (required unless specified in config file) | &lt;undefined&gt; |
-|   nc    | cluster.connect.retries                   | Number of attempts to contact CC before giving up | 5       |
+|   nc    | cluster.connect.retries                   | Number of attempts to contact CC before giving up | 5 |
 |   nc    | cluster.listen.address                    | IP Address to bind cluster listener on this NC | same as address |
-|   nc    | cluster.listen.port                       | IP port to bind cluster listener | 0       |
-|   nc    | cluster.port                              | Cluster Controller port | 1099    |
+|   nc    | cluster.listen.port                       | IP port to bind cluster listener | 0 |
+|   nc    | cluster.port                              | Cluster Controller port | 1099 |
 |   nc    | cluster.public.address                    | Public IP Address to announce cluster listener | same as public.address |
 |   nc    | cluster.public.port                       | Public IP port to announce cluster listener | same as cluster.listen.port |
 |   nc    | command                                   | Command NCService should invoke to start the NCDriver | hyracksnc |
 |   nc    | core.dump.dir                             | The directory where node core dumps should be written | ${java.io.tmpdir}/asterixdb/coredump |
 |   nc    | data.listen.address                       | IP Address to bind data listener | same as address |
-|   nc    | data.listen.port                          | IP port to bind data listener | 0       |
+|   nc    | data.listen.port                          | IP port to bind data listener | 0 |
 |   nc    | data.public.address                       | Public IP Address to announce data listener | same as public.address |
 |   nc    | data.public.port                          | Public IP port to announce data listener | same as data.listen.port |
 |   nc    | iodevices                                 | Comma separated list of IO Device mount points | ${java.io.tmpdir}/asterixdb/iodevice |
 |   nc    | jvm.args                                  | JVM args to pass to the NCDriver | &lt;undefined&gt; |
 |   nc    | messaging.listen.address                  | IP Address to bind messaging listener | same as address |
-|   nc    | messaging.listen.port                     | IP port to bind messaging listener | 0       |
+|   nc    | messaging.listen.port                     | IP port to bind messaging listener | 0 |
 |   nc    | messaging.public.address                  | Public IP Address to announce messaging listener | same as public.address |
 |   nc    | messaging.public.port                     | Public IP port to announce messaging listener | same as messaging.listen.port |
 |   nc    | ncservice.address                         | Address the CC should use to contact the NCService associated with this NC | same as public.address |
-|   nc    | ncservice.pid                             | PID of the NCService which launched this NCDriver | -1      |
-|   nc    | ncservice.port                            | Port the CC should use to contact the NCService associated with this NC | 9090    |
-|   nc    | net.buffer.count                          | Number of network buffers per input/output channel | 1       |
-|   nc    | net.thread.count                          | Number of threads to use for Network I/O | 1       |
+|   nc    | ncservice.pid                             | PID of the NCService which launched this NCDriver | -1 |
+|   nc    | ncservice.port                            | Port the CC should use to contact the NCService associated with this NC | 9090 |
+|   nc    | net.buffer.count                          | Number of network buffers per input/output channel | 1 |
+|   nc    | net.thread.count                          | Number of threads to use for Network I/O | 1 |
 |   nc    | public.address                            | Default public address that other processes should use to contact this NC.  All services will advertise this address unless a service-specific public address is supplied. | same as address |
 |   nc    | result.listen.address                     | IP Address to bind dataset result distribution listener | same as address |
-|   nc    | result.listen.port                        | IP port to bind dataset result distribution listener | 0       |
+|   nc    | result.listen.port                        | IP port to bind dataset result distribution listener | 0 |
 |   nc    | result.manager.memory                     | Memory usable for result caching at this Node Controller in bytes | -1 (-1 B) |
 |   nc    | result.public.address                     | Public IP Address to announce dataset result distribution listener | same as public.address |
 |   nc    | result.public.port                        | Public IP port to announce dataset result distribution listener | same as result.listen.port |
-|   nc    | result.sweep.threshold                    | The duration within which an instance of the result cleanup should be invoked in milliseconds | 60000   |
+|   nc    | result.sweep.threshold                    | The duration within which an instance of the result cleanup should be invoked in milliseconds | 60000 |
 |   nc    | result.ttl                                | Limits the amount of time results for asynchronous jobs should be retained by the system in milliseconds | 86400000 |
 |   nc    | storage.buffercache.maxopenfiles          | The maximum number of open files in the buffer cache | 2147483647 |
 |   nc    | storage.buffercache.pagesize              | The page size in bytes for pages in the buffer cache | 131072 (128 kB) |
 |   nc    | storage.buffercache.size                  | The size of memory allocated to the disk buffer cache.  The value should be a multiple of the buffer cache page size. | 715915264 (682.75 MB) |
-|   nc    | storage.lsm.bloomfilter.falsepositiverate | The maximum acceptable false positive rate for bloom filters associated with LSM indexes | 0.01    |
+|   nc    | storage.lsm.bloomfilter.falsepositiverate | The maximum acceptable false positive rate for bloom filters associated with LSM indexes | 0.01 |
 |   nc    | storage.memorycomponent.globalbudget      | The size of memory allocated to the memory components.  The value should be a multiple of the memory component page size | 715915264 (682.75 MB) |
-|   nc    | storage.memorycomponent.numcomponents     | The number of memory components to be used per lsm index | 2       |
+|   nc    | storage.memorycomponent.numcomponents     | The number of memory components to be used per lsm index | 2 |
 |   nc    | storage.memorycomponent.numpages          | The number of pages to allocate for a memory component.  This budget is shared by all the memory components of the primary index and all its secondary indexes across all I/O devices on a node.  Note: in-memory components usually has fill factor of 75% since the pages are 75% full and the remaining 25% is un-utilized | 1/16th of the storage.memorycomponent.globalbudget value |
 |   nc    | storage.memorycomponent.pagesize          | The page size in bytes for pages allocated to memory components | 131072 (128 kB) |
 |   nc    | storage.metadata.memorycomponent.numpages | The number of pages to allocate for a metadata memory component | 1/64th of the storage.memorycomponent.globalbudget value or 256, whichever is larger |
@@ -343,35 +343,36 @@
 | common  | compiler.framesize                        | The page size (in bytes) for computation | 32768 (32 kB) |
 | common  | compiler.groupmemory                      | The memory budget (in bytes) for a group by operator instance in a partition | 33554432 (32 MB) |
 | common  | compiler.joinmemory                       | The memory budget (in bytes) for a join operator instance in a partition | 33554432 (32 MB) |
-| common  | compiler.parallelism                      | The degree of parallelism for query execution. Zero means to use the storage parallelism as the query execution parallelism, while other integer values dictate the number of query execution parallel partitions. The system will fall back to use the number of all available CPU cores in the cluster as the degree of parallelism if the number set by a user is too large or too small | 0       |
+| common  | compiler.parallelism                      | The degree of parallelism for query execution. Zero means to use the storage parallelism as the query execution parallelism, while other integer values dictate the number of query execution parallel partitions. The system will fall back to use the number of all available CPU cores in the cluster as the degree of parallelism if the number set by a user is too large or too small | 0 |
 | common  | compiler.sortmemory                       | The memory budget (in bytes) for a sort operator instance in a partition | 33554432 (32 MB) |
 | common  | instance.name                             | The name of this cluster instance | DEFAULT_INSTANCE |
 | common  | log.level                                 | The logging level for master and slave processes | WARNING |
-| common  | max.wait.active.cluster                   | The max pending time (in seconds) for cluster startup. After the threshold, if the cluster still is not up and running, it is considered unavailable | 60      |
-| common  | messaging.frame.count                     | N/A     | 512     |
-| common  | messaging.frame.size                      | N/A     | 4096 (4 kB) |
-| common  | metadata.callback.port                    | IP port to bind metadata callback listener (0 = random port) | 0       |
-| common  | metadata.listen.port                      | IP port to bind metadata listener (0 = random port) | 0       |
+| common  | max.wait.active.cluster                   | The max pending time (in seconds) for cluster startup. After the threshold, if the cluster still is not up and running, it is considered unavailable | 60 |
+| common  | messaging.frame.count                     | Number of reusable frames for NC to NC messaging | 512 |
+| common  | messaging.frame.size                      | The frame size to be used for NC to NC messaging | 4096 (4 kB) |
+| common  | metadata.callback.port                    | IP port to bind metadata callback listener (0 = random port) | 0 |
+| common  | metadata.listen.port                      | IP port to bind metadata listener (0 = random port) | 0 |
 | common  | metadata.node                             | the node which should serve as the metadata node | &lt;undefined&gt; |
-| common  | metadata.registration.timeout.secs        | how long in seconds to wait for the metadata node to register with the CC | 60      |
-| common  | plot.activate                             | N/A     | false   |
-| common  | replication.log.batchsize                 | N/A     | 4096 (4 kB) |
-| common  | replication.log.buffer.numpages           | N/A     | 8       |
-| common  | replication.log.buffer.pagesize           | N/A     | 131072 (128 kB) |
-| common  | replication.max.remote.recovery.attempts  | N/A     | 5       |
-| common  | replication.timeout                       | N/A     | 15      |
-| common  | txn.commitprofiler.reportinterval         | N/A     | 5       |
+| common  | metadata.registration.timeout.secs        | how long in seconds to wait for the metadata node to register with the CC | 60 |
+| common  | plot.activate                             | N/A | false |
+| common  | replication.log.batchsize                 | The size in bytes to replicate in each batch | 4096 (4 kB) |
+| common  | replication.log.buffer.numpages           | The number of log buffer pages | 8 |
+| common  | replication.log.buffer.pagesize           | The size in bytes of each log buffer page | 131072 (128 kB) |
+| common  | replication.max.remote.recovery.attempts  | The maximum number of times to attempt to recover from a replica on failure before giving up | 5 |
+| common  | replication.timeout                       | The time in seconds to timeout when trying to contact a replica, before assuming it is dead | 15 |
+| common  | txn.commitprofiler.enabled                | Enable output of commit profiler logs | false |
+| common  | txn.commitprofiler.reportinterval         | Interval (in seconds) to report commit profiler logs | 5 |
 | common  | txn.job.recovery.memorysize               | The memory budget (in bytes) used for recovery | 67108864 (64 MB) |
-| common  | txn.lock.escalationthreshold              | N/A     | 1000    |
-| common  | txn.lock.shrinktimer                      | N/A     | 5000    |
-| common  | txn.lock.timeout.sweepthreshold           | Interval (in milliseconds) for checking lock timeout | 10000   |
-| common  | txn.lock.timeout.waitthreshold            | Time out (in milliseconds) of waiting for a lock | 60000   |
-| common  | txn.log.buffer.numpages                   | The number of pages in the transaction log tail | 8       |
+| common  | txn.lock.escalationthreshold              | The maximum number of entity locks to obtain before upgrading to a dataset lock | 1000 |
+| common  | txn.lock.shrinktimer                      | The time (in milliseconds) where under utilization of resources will trigger a shrink phase | 5000 |
+| common  | txn.lock.timeout.sweepthreshold           | Interval (in milliseconds) for checking lock timeout | 10000 |
+| common  | txn.lock.timeout.waitthreshold            | Time out (in milliseconds) of waiting for a lock | 60000 |
+| common  | txn.log.buffer.numpages                   | The number of pages in the transaction log tail | 8 |
 | common  | txn.log.buffer.pagesize                   | The page size (in bytes) for transaction log buffer | 131072 (128 kB) |
-| common  | txn.log.checkpoint.history                | The number of checkpoints to keep in the transaction log | 0       |
+| common  | txn.log.checkpoint.history                | The number of checkpoints to keep in the transaction log | 0 |
 | common  | txn.log.checkpoint.lsnthreshold           | The checkpoint threshold (in terms of LSNs (log sequence numbers) that have been written to the transaction log, i.e., the length of the transaction log) for transaction logs | 67108864 (64 MB) |
-| common  | txn.log.checkpoint.pollfrequency          | N/A     | 120     |
-| common  | txn.log.partitionsize                     | N/A     | 268435456 (256 MB) |
+| common  | txn.log.checkpoint.pollfrequency          | The frequency (in seconds) the checkpoint thread should check to see if a checkpoint should be written | 120 |
+| common  | txn.log.partitionsize                     | The maximum size (in bytes) of each transaction log file | 268435456 (256 MB) |
 
 
 For the optional NCService process configuration file, the following parameters, under "[ncservice]" section.
diff --git a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/recovery/RemoteRecoveryManager.java b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/recovery/RemoteRecoveryManager.java
index fcc997f..7441ec7 100644
--- a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/recovery/RemoteRecoveryManager.java
+++ b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/recovery/RemoteRecoveryManager.java
@@ -169,7 +169,7 @@
         PersistentLocalResourceRepository resourceRepository = (PersistentLocalResourceRepository) runtimeContext
                 .getLocalResourceRepository();
         IDatasetLifecycleManager datasetLifeCycleManager = runtimeContext.getDatasetLifecycleManager();
-        Map<String, ClusterPartition[]> nodePartitions = ((IPropertiesProvider) runtimeContext).getMetadataProperties()
+        Map<String, ClusterPartition[]> nodePartitions = runtimeContext.getMetadataProperties()
                 .getNodePartitions();
 
         while (true) {
diff --git a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/logging/LogBuffer.java b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/logging/LogBuffer.java
index efcff05..7b5d8ee 100644
--- a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/logging/LogBuffer.java
+++ b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/logging/LogBuffer.java
@@ -262,7 +262,7 @@
                         txnSubsystem.getLockManager().unlock(reusableDatasetId, logRecord.getPKHashValue(),
                                 LockMode.ANY, txnCtx);
                         txnCtx.notifyOptracker(false);
-                        if (TransactionUtil.PROFILE_MODE) {
+                        if (txnSubsystem.getTransactionProperties().isCommitProfilerEnabled()) {
                             txnSubsystem.incrementEntityCommitCount();
                         }
                     } else if (logRecord.getLogType() == LogType.JOB_COMMIT

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/1589
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I04826591133e7e8283b7288e14324659fd831954
Gerrit-PatchSet: 3
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>