Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 785FE200D26 for ; Fri, 20 Oct 2017 23:46:27 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 76C89160BCB; Fri, 20 Oct 2017 21:46:27 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 1EC4D1609ED for ; Fri, 20 Oct 2017 23:46:25 +0200 (CEST) Received: (qmail 36496 invoked by uid 500); 20 Oct 2017 21:46:25 -0000 Mailing-List: contact notifications-help@asterixdb.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@asterixdb.apache.org Delivered-To: mailing list notifications@asterixdb.apache.org Received: (qmail 36487 invoked by uid 99); 20 Oct 2017 21:46:25 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd1-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 20 Oct 2017 21:46:25 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd1-us-west.apache.org (ASF Mail Server at spamd1-us-west.apache.org) with ESMTP id 82AC2C116F for ; Fri, 20 Oct 2017 21:46:24 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd1-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 2.126 X-Spam-Level: ** X-Spam-Status: No, score=2.126 tagged_above=-999 required=6.31 tests=[MISSING_HEADERS=1.207, SPF_FAIL=0.919] autolearn=disabled Received: from mx1-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd1-us-west.apache.org [10.40.0.7]) (amavisd-new, port 10024) with ESMTP id 5vNalez0tuWc for ; Fri, 20 Oct 2017 21:46:22 +0000 (UTC) Received: from vitalstatistix.ics.uci.edu (vitalstatistix.ics.uci.edu [128.195.52.38]) by mx1-lw-eu.apache.org (ASF Mail Server at mx1-lw-eu.apache.org) with ESMTP id 365E75F238 for ; Fri, 20 Oct 2017 21:46:21 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by vitalstatistix.ics.uci.edu (Postfix) with ESMTP id 8B9B9100A41; Fri, 20 Oct 2017 14:46:20 -0700 (PDT) Date: Fri, 20 Oct 2017 14:46:20 -0700 From: "abdullah alamoudi (Code Review)" CC: Ian Maxon , Jenkins , Murtadha Hubail Reply-To: bamousaa@gmail.com X-Gerrit-MessageType: merged Subject: Change in asterixdb[master]: [NO ISSUE][RT] Add more startup debug logs X-Gerrit-Change-Id: I25e5c6423f3160c4becbfe682edccc49613e371c X-Gerrit-ChangeURL: X-Gerrit-Commit: 9473e03276cace7484e4ab824da21a7368029f97 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Content-Disposition: inline User-Agent: Gerrit/2.12.7 Message-Id: <20171020214620.8B9B9100A41@vitalstatistix.ics.uci.edu> archived-at: Fri, 20 Oct 2017 21:46:27 -0000 abdullah alamoudi has submitted this change and it was merged. Change subject: [NO ISSUE][RT] Add more startup debug logs ...................................................................... [NO ISSUE][RT] Add more startup debug logs - user model changes: no - storage format changes: no - interface changes: no details: - Add more logs during startup sequence. Change-Id: I25e5c6423f3160c4becbfe682edccc49613e371c Reviewed-on: https://asterix-gerrit.ics.uci.edu/2084 Tested-by: Jenkins Contrib: Jenkins Integration-Tests: Jenkins Reviewed-by: Ian Maxon --- M asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/NCAppRuntimeContext.java M asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/TransactionSubsystem.java M asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/BindMetadataNodeTask.java M asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/CheckpointTask.java M asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/ExternalLibrarySetupTask.java M asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/LocalRecoveryTask.java M asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/MetadataBootstrapTask.java M asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/RemoteRecoveryTask.java M asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/ReportMaxResourceIdTask.java M asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/StartFailbackTask.java M asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/StartLifecycleComponentsTask.java M asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/StartReplicationServiceTask.java M asterixdb/asterix-app/src/main/java/org/apache/asterix/app/replication/message/StartupTaskResponseMessage.java M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/transactions/CheckpointProperties.java M asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/recovery/AbstractCheckpointManager.java 15 files changed, 132 insertions(+), 20 deletions(-) Approvals: Jenkins: Verified; ; Verified Ian Maxon: Looks good to me, approved Objections: Anon. E. Moose #1000171: Jenkins: Violations found diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/NCAppRuntimeContext.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/NCAppRuntimeContext.java index 3e0f2c6..5370c03 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/NCAppRuntimeContext.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/NCAppRuntimeContext.java @@ -187,11 +187,14 @@ IAppRuntimeContextProvider asterixAppRuntimeContextProvider = new AppRuntimeContextProviderForRecovery(this); txnSubsystem = new TransactionSubsystem(getServiceContext(), getServiceContext().getNodeId(), asterixAppRuntimeContextProvider, txnProperties); - IRecoveryManager recoveryMgr = txnSubsystem.getRecoveryManager(); SystemState systemState = recoveryMgr.getSystemState(); if (initialRun || systemState == SystemState.PERMANENT_DATA_LOSS) { //delete any storage data before the resource factory is initialized + if (LOGGER.isLoggable(Level.WARNING)) { + LOGGER.log(Level.WARNING, + "Deleting the storage dir. initialRun = " + initialRun + ", systemState = " + systemState); + } localResourceRepository.deleteStorageData(true); } 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 1e920e7..4752481 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 @@ -19,6 +19,7 @@ package org.apache.asterix.app.nc; import java.util.concurrent.Callable; +import java.util.logging.Level; import java.util.logging.Logger; import org.apache.asterix.common.config.ReplicationProperties; @@ -47,6 +48,7 @@ * Users of transaction sub-systems must obtain them from the provider. */ public class TransactionSubsystem implements ITransactionSubsystem { + private static final Logger LOGGER = Logger.getLogger(TransactionSubsystem.class.getName()); private final String id; private final ILogManager logManager; private final ILockManager lockManager; @@ -72,8 +74,10 @@ asterixAppRuntimeContextProvider.getAppContext().getReplicationProperties(); IReplicationStrategy replicationStrategy = repProperties.getReplicationStrategy(); final boolean replicationEnabled = repProperties.isParticipant(id); - final CheckpointProperties checkpointProperties = new CheckpointProperties(txnProperties, id); + if (LOGGER.isLoggable(Level.INFO)) { + LOGGER.log(Level.INFO, "Checkpoint Properties: " + checkpointProperties); + } checkpointManager = CheckpointManagerFactory.create(this, checkpointProperties, replicationEnabled); final Checkpoint latestCheckpoint = checkpointManager.getLatest(); if (latestCheckpoint != null && latestCheckpoint.getStorageVersion() != StorageConstants.VERSION) { @@ -88,7 +92,6 @@ this.logManager = new LogManager(this); } this.recoveryManager = new RecoveryManager(this, serviceCtx); - if (this.txnProperties.isCommitProfilerEnabled()) { ecp = new EntityCommitProfiler(this, this.txnProperties.getCommitProfilerReportInterval()); getAsterixAppRuntimeContextProvider().getThreadExecutor().submit(ecp); diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/BindMetadataNodeTask.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/BindMetadataNodeTask.java index 424e66c..49a84e1 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/BindMetadataNodeTask.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/BindMetadataNodeTask.java @@ -18,8 +18,8 @@ */ package org.apache.asterix.app.nc.task; -import org.apache.asterix.common.api.INcApplicationContext; import org.apache.asterix.common.api.INCLifecycleTask; +import org.apache.asterix.common.api.INcApplicationContext; import org.apache.hyracks.api.exceptions.HyracksDataException; import org.apache.hyracks.api.service.IControllerService; @@ -45,4 +45,9 @@ throw HyracksDataException.create(e); } } + + @Override + public String toString() { + return "{ \"class\" : \"" + getClass().getSimpleName() + "\", \"export-stub\" : " + exportStub + " }"; + } } diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/CheckpointTask.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/CheckpointTask.java index b7701d2..02c377a 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/CheckpointTask.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/CheckpointTask.java @@ -18,8 +18,8 @@ */ package org.apache.asterix.app.nc.task; -import org.apache.asterix.common.api.INcApplicationContext; import org.apache.asterix.common.api.INCLifecycleTask; +import org.apache.asterix.common.api.INcApplicationContext; import org.apache.asterix.common.transactions.ICheckpointManager; import org.apache.hyracks.api.exceptions.HyracksDataException; import org.apache.hyracks.api.service.IControllerService; @@ -34,4 +34,9 @@ ICheckpointManager checkpointMgr = appContext.getTransactionSubsystem().getCheckpointManager(); checkpointMgr.doSharpCheckpoint(); } + + @Override + public String toString() { + return "{ \"class\" : \"" + getClass().getSimpleName() + "\" }"; + } } diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/ExternalLibrarySetupTask.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/ExternalLibrarySetupTask.java index 9506690..4e330c6 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/ExternalLibrarySetupTask.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/ExternalLibrarySetupTask.java @@ -19,8 +19,8 @@ package org.apache.asterix.app.nc.task; import org.apache.asterix.app.external.ExternalLibraryUtils; -import org.apache.asterix.common.api.INcApplicationContext; import org.apache.asterix.common.api.INCLifecycleTask; +import org.apache.asterix.common.api.INcApplicationContext; import org.apache.hyracks.api.exceptions.HyracksDataException; import org.apache.hyracks.api.service.IControllerService; @@ -42,4 +42,9 @@ throw HyracksDataException.create(e); } } + + @Override + public String toString() { + return "{ \"class\" : \"" + getClass().getSimpleName() + "\", \"metadata-node\" : " + metadataNode + " }"; + } } \ No newline at end of file diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/LocalRecoveryTask.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/LocalRecoveryTask.java index d52d15e..eb19ad6 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/LocalRecoveryTask.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/LocalRecoveryTask.java @@ -19,10 +19,11 @@ package org.apache.asterix.app.nc.task; import java.io.IOException; +import java.util.Arrays; import java.util.Set; -import org.apache.asterix.common.api.INcApplicationContext; import org.apache.asterix.common.api.INCLifecycleTask; +import org.apache.asterix.common.api.INcApplicationContext; import org.apache.asterix.common.exceptions.ACIDException; import org.apache.hyracks.api.exceptions.HyracksDataException; import org.apache.hyracks.api.service.IControllerService; @@ -45,4 +46,10 @@ throw HyracksDataException.create(e); } } + + @Override + public String toString() { + return "{ \"class\" : \"" + getClass().getSimpleName() + "\", \"partitions\" : " + + Arrays.toString(partitions.toArray()) + " }"; + } } diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/MetadataBootstrapTask.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/MetadataBootstrapTask.java index 6415416..784f3b0 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/MetadataBootstrapTask.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/MetadataBootstrapTask.java @@ -18,8 +18,8 @@ */ package org.apache.asterix.app.nc.task; -import org.apache.asterix.common.api.INcApplicationContext; import org.apache.asterix.common.api.INCLifecycleTask; +import org.apache.asterix.common.api.INcApplicationContext; import org.apache.asterix.common.transactions.IRecoveryManager.SystemState; import org.apache.hyracks.api.exceptions.HyracksDataException; import org.apache.hyracks.api.service.IControllerService; @@ -38,4 +38,9 @@ throw HyracksDataException.create(e); } } + + @Override + public String toString() { + return "{ \"class\" : \"" + getClass().getSimpleName() + "\" }"; + } } \ No newline at end of file diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/RemoteRecoveryTask.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/RemoteRecoveryTask.java index f74a986..d330684 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/RemoteRecoveryTask.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/RemoteRecoveryTask.java @@ -22,8 +22,8 @@ import java.util.Map; import java.util.Set; -import org.apache.asterix.common.api.INcApplicationContext; import org.apache.asterix.common.api.INCLifecycleTask; +import org.apache.asterix.common.api.INcApplicationContext; import org.apache.hyracks.api.exceptions.HyracksDataException; import org.apache.hyracks.api.service.IControllerService; @@ -49,4 +49,9 @@ private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException { in.defaultReadObject(); } + + @Override + public String toString() { + return "{ \"class\" : \"" + getClass().getSimpleName() + "\", \"recovery-plan\" : " + recoveryPlan + " }"; + } } \ No newline at end of file diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/ReportMaxResourceIdTask.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/ReportMaxResourceIdTask.java index 7c30a29..22d3cde 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/ReportMaxResourceIdTask.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/ReportMaxResourceIdTask.java @@ -32,4 +32,9 @@ public void perform(IControllerService cs) throws HyracksDataException { ReportMaxResourceIdMessage.send((NodeControllerService) cs); } + + @Override + public String toString() { + return "{ \"class\" : \"" + getClass().getSimpleName() + "\" }"; + } } \ No newline at end of file diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/StartFailbackTask.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/StartFailbackTask.java index 8696d23..ecd93a3 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/StartFailbackTask.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/StartFailbackTask.java @@ -18,8 +18,8 @@ */ package org.apache.asterix.app.nc.task; -import org.apache.asterix.common.api.INcApplicationContext; import org.apache.asterix.common.api.INCLifecycleTask; +import org.apache.asterix.common.api.INcApplicationContext; import org.apache.hyracks.api.exceptions.HyracksDataException; import org.apache.hyracks.api.service.IControllerService; @@ -32,4 +32,9 @@ INcApplicationContext appContext = (INcApplicationContext) cs.getApplicationContext(); appContext.getRemoteRecoveryManager().startFailbackProcess(); } + + @Override + public String toString() { + return "{ \"class\" : \"" + getClass().getSimpleName() + "\" }"; + } } diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/StartLifecycleComponentsTask.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/StartLifecycleComponentsTask.java index 799581b..87d3414 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/StartLifecycleComponentsTask.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/StartLifecycleComponentsTask.java @@ -23,8 +23,8 @@ import java.util.logging.Level; import java.util.logging.Logger; -import org.apache.asterix.common.api.INcApplicationContext; import org.apache.asterix.common.api.INCLifecycleTask; +import org.apache.asterix.common.api.INcApplicationContext; import org.apache.asterix.common.config.MetadataProperties; import org.apache.asterix.hyracks.bootstrap.AsterixStateDumpHandler; import org.apache.hyracks.api.exceptions.HyracksDataException; @@ -61,4 +61,9 @@ serviceCtx.setStateDumpHandler(new AsterixStateDumpHandler(serviceCtx.getNodeId(), lccm.getDumpPath(), lccm)); lccm.startAll(); } + + @Override + public String toString() { + return "{ \"class\" : \"" + getClass().getSimpleName() + "\" }"; + } } diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/StartReplicationServiceTask.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/StartReplicationServiceTask.java index 60d5c29..253f121 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/StartReplicationServiceTask.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/StartReplicationServiceTask.java @@ -18,8 +18,8 @@ */ package org.apache.asterix.app.nc.task; -import org.apache.asterix.common.api.INcApplicationContext; import org.apache.asterix.common.api.INCLifecycleTask; +import org.apache.asterix.common.api.INcApplicationContext; import org.apache.asterix.common.replication.IReplicationManager; import org.apache.hyracks.api.exceptions.HyracksDataException; import org.apache.hyracks.api.service.IControllerService; @@ -43,4 +43,9 @@ throw HyracksDataException.create(e); } } + + @Override + public String toString() { + return "{ \"class\" : \"" + getClass().getSimpleName() + "\" }"; + } } \ No newline at end of file diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/replication/message/StartupTaskResponseMessage.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/replication/message/StartupTaskResponseMessage.java index aaf8918..b941343 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/replication/message/StartupTaskResponseMessage.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/replication/message/StartupTaskResponseMessage.java @@ -53,9 +53,16 @@ Throwable exception = null; try { for (INCLifecycleTask task : tasks) { + if (LOGGER.isLoggable(Level.INFO)) { + LOGGER.log(Level.INFO, "Starting startup task: " + task); + } task.perform(cs); + if (LOGGER.isLoggable(Level.INFO)) { + LOGGER.log(Level.INFO, "Completed startup task: " + task); + } } } catch (Throwable e) { //NOSONAR all startup failures should be reported to CC + LOGGER.log(Level.SEVERE, "Failed during startup task", e); success = false; exception = e; } diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/transactions/CheckpointProperties.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/transactions/CheckpointProperties.java index b8af3a6..72f987a 100644 --- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/transactions/CheckpointProperties.java +++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/transactions/CheckpointProperties.java @@ -50,4 +50,11 @@ public String getCheckpointDirPath() { return checkpointDirPath; } + + @Override + public String toString() { + return "{\"class\" : \"" + getClass().getSimpleName() + "\", \"checkpoint-dir-path\" : \"" + checkpointDirPath + + "\", \"lsn-threshold\" : " + lsnThreshold + ", \"poll-frequency\" : " + pollFrequency + + ", \"history-to-keep\" : " + historyToKeep + " }"; + } } diff --git a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/recovery/AbstractCheckpointManager.java b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/recovery/AbstractCheckpointManager.java index 2a075f1..36a91dc 100644 --- a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/recovery/AbstractCheckpointManager.java +++ b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/recovery/AbstractCheckpointManager.java @@ -65,12 +65,18 @@ public AbstractCheckpointManager(ITransactionSubsystem txnSubsystem, CheckpointProperties checkpointProperties) { this.txnSubsystem = txnSubsystem; String checkpointDirPath = checkpointProperties.getCheckpointDirPath(); + if (LOGGER.isLoggable(Level.INFO)) { + LOGGER.log(Level.INFO, "Checkpoint directory = " + checkpointDirPath); + } if (!checkpointDirPath.endsWith(File.separator)) { checkpointDirPath += File.separator; } checkpointDir = new File(checkpointDirPath); // Create the checkpoint directory if missing if (!checkpointDir.exists()) { + if (LOGGER.isLoggable(Level.INFO)) { + LOGGER.log(Level.INFO, "Checkpoint directory " + checkpointDirPath + " didn't exist. Creating one"); + } checkpointDir.mkdirs(); } lsnThreshold = checkpointProperties.getLsnThreshold(); @@ -82,25 +88,42 @@ @Override public Checkpoint getLatest() throws ACIDException { // Read all checkpointObjects from the existing checkpoint files + LOGGER.log(Level.INFO, "Getting latest checkpoint"); File[] checkpoints = checkpointDir.listFiles(filter); if (checkpoints == null || checkpoints.length == 0) { + if (LOGGER.isLoggable(Level.INFO)) { + LOGGER.log(Level.INFO, + "Listing of files in the checkpoint dir returned " + (checkpoints == null ? "null" : "empty")); + } return null; + } + if (LOGGER.isLoggable(Level.INFO)) { + LOGGER.log(Level.INFO, "Listing of files in the checkpoint dir returned " + Arrays.toString(checkpoints)); } List checkpointObjectList = new ArrayList<>(); for (File file : checkpoints) { try { - LOGGER.log(Level.WARNING, "Reading checkpoint file: " + file.getAbsolutePath()); + if (LOGGER.isLoggable(Level.WARNING)) { + LOGGER.log(Level.WARNING, "Reading checkpoint file: " + file.getAbsolutePath()); + } String jsonString = new String(Files.readAllBytes(Paths.get(file.getAbsolutePath()))); checkpointObjectList.add(Checkpoint.fromJson(jsonString)); } catch (ClosedByInterruptException e) { Thread.currentThread().interrupt(); - LOGGER.log(Level.WARNING, "Interrupted while reading checkpoint file: " + file.getAbsolutePath(), e); + if (LOGGER.isLoggable(Level.WARNING)) { + LOGGER.log(Level.WARNING, "Interrupted while reading checkpoint file: " + file.getAbsolutePath(), + e); + } throw new ACIDException(e); } catch (IOException e) { // ignore corrupted checkpoint file - LOGGER.log(Level.WARNING, "Failed to read checkpoint file: " + file.getAbsolutePath(), e); + if (LOGGER.isLoggable(Level.WARNING)) { + LOGGER.log(Level.WARNING, "Failed to read checkpoint file: " + file.getAbsolutePath(), e); + } file.delete(); - LOGGER.log(Level.INFO, "Deleted corrupted checkpoint file: " + file.getAbsolutePath()); + if (LOGGER.isLoggable(Level.WARNING)) { + LOGGER.log(Level.WARNING, "Deleted corrupted checkpoint file: " + file.getAbsolutePath()); + } } } /** @@ -144,8 +167,8 @@ } public Path getCheckpointPath(long checkpointTimestamp) { - return Paths.get(checkpointDir.getAbsolutePath() + File.separator + CHECKPOINT_FILENAME_PREFIX + Long - .toString(checkpointTimestamp)); + return Paths.get(checkpointDir.getAbsolutePath() + File.separator + CHECKPOINT_FILENAME_PREFIX + + Long.toString(checkpointTimestamp)); } protected void capture(long minMCTFirstLSN, boolean sharp) throws HyracksDataException { @@ -171,12 +194,24 @@ private void persist(Checkpoint checkpoint) throws HyracksDataException { // Get checkpoint file path Path path = getCheckpointPath(checkpoint.getTimeStamp()); + + if (LOGGER.isLoggable(Level.INFO)) { + File file = path.toFile(); + LOGGER.log(Level.INFO, "Persisting checkpoint file to " + file + " which " + + (file.exists() ? "already exists" : "doesn't exist yet")); + } // Write checkpoint file to disk try (BufferedWriter writer = Files.newBufferedWriter(path)) { writer.write(checkpoint.asJson()); writer.flush(); } catch (IOException e) { - throw new HyracksDataException("Failed to write checkpoint to disk", e); + LOGGER.log(Level.SEVERE, "Failed to write checkpoint to disk", e); + throw HyracksDataException.create(e); + } + if (LOGGER.isLoggable(Level.INFO)) { + File file = path.toFile(); + LOGGER.log(Level.INFO, "Completed persisting checkpoint file to " + file + " which now " + + (file.exists() ? "exists" : " still doesn't exist")); } } @@ -185,8 +220,13 @@ // Sort the filenames lexicographically to keep the latest checkpoint history files. Arrays.sort(checkpointFiles); for (int i = 0; i < checkpointFiles.length - historyToKeep; i++) { + if (LOGGER.isLoggable(Level.WARNING)) { + LOGGER.warning("Deleting checkpoint file at: " + checkpointFiles[i].getAbsolutePath()); + } if (!checkpointFiles[i].delete()) { - LOGGER.warning("Could not delete checkpoint file at: " + checkpointFiles[i].getAbsolutePath()); + if (LOGGER.isLoggable(Level.WARNING)) { + LOGGER.warning("Could not delete checkpoint file at: " + checkpointFiles[i].getAbsolutePath()); + } } } } -- To view, visit https://asterix-gerrit.ics.uci.edu/2084 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: merged Gerrit-Change-Id: I25e5c6423f3160c4becbfe682edccc49613e371c Gerrit-PatchSet: 2 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: abdullah alamoudi Gerrit-Reviewer: Anon. E. Moose #1000171 Gerrit-Reviewer: Ian Maxon Gerrit-Reviewer: Jenkins Gerrit-Reviewer: Murtadha Hubail Gerrit-Reviewer: abdullah alamoudi