Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -74,8 +74,6 @@ public class OMMetrics implements OmMetadataReaderMetrics {
private @Metric MutableCounterLong numSnapshotRenames;
private @Metric MutableCounterLong numSnapshotDiffJobs;
private @Metric MutableCounterLong numSnapshotInfos;
private @Metric MutableCounterLong numSnapshotPurges;
private @Metric MutableCounterLong numSnapshotSetProperties;
private @Metric MutableCounterLong numCancelSnapshotDiffs;
private @Metric MutableCounterLong numListSnapshotDiffJobs;

Expand Down Expand Up @@ -146,8 +144,6 @@ public class OMMetrics implements OmMetadataReaderMetrics {
private @Metric MutableCounterLong numSnapshotListFails;
private @Metric MutableCounterLong numSnapshotDiffJobFails;
private @Metric MutableCounterLong numSnapshotInfoFails;
private @Metric MutableCounterLong numSnapshotPurgeFails;
private @Metric MutableCounterLong numSnapshotSetPropertyFails;
private @Metric MutableCounterLong numCancelSnapshotDiffFails;
private @Metric MutableCounterLong numListSnapshotDiffJobFails;

Expand Down Expand Up @@ -507,14 +503,6 @@ public void incNumSnapshotInfos() {
numSnapshotInfos.incr();
}

public void incNumSnapshotPurges() {
numSnapshotPurges.incr();
}

public void incNumSnapshotSetProperties() {
numSnapshotSetProperties.incr();
}

public void incNumSnapshotDiffJobs() {
numSnapshotDiffJobs.incr();
}
Expand Down Expand Up @@ -547,14 +535,6 @@ public void incNumSnapshotInfoFails() {
numSnapshotInfoFails.incr();
}

public void incNumSnapshotPurgeFails() {
numSnapshotPurgeFails.incr();
}

public void incNumSnapshotSetPropertyFails() {
numSnapshotSetPropertyFails.incr();
}

public void setNumSnapshotActive(long num) {
long currVal = numSnapshotActive.value();
numSnapshotActive.incr(num - currVal);
Expand Down Expand Up @@ -1384,14 +1364,6 @@ public long getNumSnapshotDiffJobs() {
return numSnapshotDiffJobs.value();
}

public long getNumSnapshotPurges() {
return numSnapshotPurges.value();
}

public long getNumSnapshotSetProperties() {
return numSnapshotSetProperties.value();
}

public long getNumSnapshotCreateFails() {
return numSnapshotCreateFails.value();
}
Expand All @@ -1416,14 +1388,6 @@ public long getNumSnapshotDeleted() {
return numSnapshotDeleted.value();
}

public long getNumSnapshotPurgeFails() {
return numSnapshotPurgeFails.value();
}

public long getNumSnapshotSetPropertyFails() {
return numSnapshotSetPropertyFails.value();
}

public void incNumTrashRenames() {
numTrashRenames.incr();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package org.apache.hadoop.ozone.om;

import org.apache.hadoop.ozone.OzoneConsts;
import org.apache.hadoop.metrics2.annotation.Metric;
import org.apache.hadoop.metrics2.annotation.Metrics;
import org.apache.hadoop.metrics2.lib.DefaultMetricsSystem;
import org.apache.hadoop.metrics2.lib.MetricsRegistry;
import org.apache.hadoop.metrics2.lib.MutableCounterLong;

/**
* This class contains internal Snapshot Operation metrics.
*/
@Metrics(about = "Snapshot Internal Operation Metrics", context = OzoneConsts.OZONE)
public class OmSnapshotInternalMetrics {

public static final String METRICS_SOURCE_NAME =
OmSnapshotInternalMetrics.class.getSimpleName();
private MetricsRegistry registry;

/*
* Total internal snapshot deletion operation metrics since last restart.
*/
@Metric("Total no. of snapshots purged")
private MutableCounterLong numSnapshotPurges;
@Metric("Total no. of snapshot set properties")
private MutableCounterLong numSnapshotSetProperties;
@Metric("Total no. of move table keys requests")
private MutableCounterLong numSnapshotMoveTableKeys;

@Metric("Total no. of snapshot purge failures")
private MutableCounterLong numSnapshotPurgeFails;
@Metric("Total no. of snapshot set property failures")
private MutableCounterLong numSnapshotSetPropertyFails;
@Metric("Total no. of snapshot move table keys failures")
private MutableCounterLong numSnapshotMoveTableKeysFails;

public OmSnapshotInternalMetrics() {
this.registry = new MetricsRegistry(METRICS_SOURCE_NAME);
}

public static OmSnapshotInternalMetrics create() {
return DefaultMetricsSystem.instance().register(METRICS_SOURCE_NAME,
"Metrics tracking the progress of snapshot internal operations",
new OmSnapshotInternalMetrics());
}

/**
* Unregister the metrics instance.
*/
public static void unregister() {
DefaultMetricsSystem.instance().unregisterSource(METRICS_SOURCE_NAME);
}

public void incNumSnapshotPurges() {
numSnapshotPurges.incr();
}

public void incNumSnapshotSetProperties() {
numSnapshotSetProperties.incr();
}

public void incNumSnapshotMoveTableKeys() {
numSnapshotMoveTableKeys.incr();
}

public void incNumSnapshotPurgeFails() {
numSnapshotPurgeFails.incr();
}

public void incNumSnapshotSetPropertyFails() {
numSnapshotSetPropertyFails.incr();
}

public void incNumSnapshotMoveTableKeysFails() {
numSnapshotMoveTableKeysFails.incr();
}

public long getNumSnapshotPurges() {
return numSnapshotPurges.value();
}

public long getNumSnapshotSetProperties() {
return numSnapshotSetProperties.value();
}

public long getNumSnapshotMoveTableKeys() {
return numSnapshotMoveTableKeys.value();
}

public long getNumSnapshotPurgeFails() {
return numSnapshotPurgeFails.value();
}

public long getNumSnapshotSetPropertyFails() {
return numSnapshotSetPropertyFails.value();
}

public long getNumSnapshotMoveTableKeysFails() {
return numSnapshotMoveTableKeysFails.value();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -406,6 +406,7 @@ public final class OzoneManager extends ServiceRuntimeInfoImpl
private final OzoneAdmins s3OzoneAdmins;

private final OMMetrics metrics;
private final OmSnapshotInternalMetrics omSnapshotIntMetrics;
private OMHAMetrics omhaMetrics;
private final ProtocolMessageMetrics<ProtocolMessageEnum>
omClientProtocolMetrics;
Expand Down Expand Up @@ -668,6 +669,7 @@ private OzoneManager(OzoneConfiguration conf, StartupOption startupOption)
OMMultiTenantManager.checkAndEnableMultiTenancy(this, conf);

metrics = OMMetrics.create();
omSnapshotIntMetrics = OmSnapshotInternalMetrics.create();
perfMetrics = OMPerformanceMetrics.register();
omDeletionMetrics = DeletingServiceMetrics.create();
// Get admin list
Expand Down Expand Up @@ -1752,6 +1754,10 @@ public OMMetrics getMetrics() {
return metrics;
}

public OmSnapshotInternalMetrics getOmSnapshotIntMetrics() {
return omSnapshotIntMetrics;
}

public OMPerformanceMetrics getPerfMetrics() {
return perfMetrics;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
import org.apache.hadoop.hdds.utils.db.cache.CacheKey;
import org.apache.hadoop.hdds.utils.db.cache.CacheValue;
import org.apache.hadoop.ozone.om.OmMetadataManagerImpl;
import org.apache.hadoop.ozone.om.OmSnapshotInternalMetrics;
import org.apache.hadoop.ozone.om.OzoneManager;
import org.apache.hadoop.ozone.om.SnapshotChainManager;
import org.apache.hadoop.ozone.om.exceptions.OMException;
Expand Down Expand Up @@ -137,6 +138,8 @@ public OMRequest preExecute(OzoneManager ozoneManager) throws IOException {
@Override
@DisallowedUntilLayoutVersion(FILESYSTEM_SNAPSHOT)
public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, ExecutionContext context) {
OmSnapshotInternalMetrics omSnapshotIntMetrics = ozoneManager.getOmSnapshotIntMetrics();

OmMetadataManagerImpl omMetadataManager = (OmMetadataManagerImpl) ozoneManager.getMetadataManager();
SnapshotChainManager snapshotChainManager = omMetadataManager.getSnapshotChainManager();

Expand Down Expand Up @@ -168,8 +171,10 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, Execut
omClientResponse = new OMSnapshotMoveTableKeysResponse(omResponse.build(), fromSnapshot, nextSnapshot,
moveTableKeysRequest.getDeletedKeysList(), moveTableKeysRequest.getDeletedDirsList(),
moveTableKeysRequest.getRenamedKeysList());
omSnapshotIntMetrics.incNumSnapshotMoveTableKeys();
} catch (IOException ex) {
omClientResponse = new OMSnapshotMoveTableKeysResponse(createErrorOMResponse(omResponse, ex));
omSnapshotIntMetrics.incNumSnapshotMoveTableKeysFails();
}
return omClientResponse;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@
import org.apache.hadoop.hdds.utils.db.cache.CacheKey;
import org.apache.hadoop.hdds.utils.db.cache.CacheValue;
import org.apache.hadoop.ozone.om.OMMetadataManager;
import org.apache.hadoop.ozone.om.OMMetrics;
import org.apache.hadoop.ozone.om.OmMetadataManagerImpl;
import org.apache.hadoop.ozone.om.OmSnapshotInternalMetrics;
import org.apache.hadoop.ozone.om.OzoneManager;
import org.apache.hadoop.ozone.om.SnapshotChainManager;
import org.apache.hadoop.ozone.om.execution.flowcontrol.ExecutionContext;
Expand Down Expand Up @@ -65,7 +65,7 @@ public OMSnapshotPurgeRequest(OMRequest omRequest) {

@Override
public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, ExecutionContext context) {
OMMetrics omMetrics = ozoneManager.getMetrics();
OmSnapshotInternalMetrics omSnapshotIntMetrics = ozoneManager.getOmSnapshotIntMetrics();

final long trxnLogIndex = context.getIndex();

Expand Down Expand Up @@ -122,13 +122,13 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, Execut

omClientResponse = new OMSnapshotPurgeResponse(omResponse.build(), snapshotDbKeys, updatedSnapshotInfos);

omMetrics.incNumSnapshotPurges();
omSnapshotIntMetrics.incNumSnapshotPurges();
LOG.info("Successfully executed snapshotPurgeRequest: {{}} along with updating snapshots:{}.",
snapshotPurgeRequest, updatedSnapshotInfos);
} catch (IOException ex) {
omClientResponse = new OMSnapshotPurgeResponse(
createErrorOMResponse(omResponse, ex));
omMetrics.incNumSnapshotPurgeFails();
omSnapshotIntMetrics.incNumSnapshotPurgeFails();
LOG.error("Failed to execute snapshotPurgeRequest:{{}}.", snapshotPurgeRequest, ex);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
import org.apache.hadoop.hdds.utils.db.cache.CacheKey;
import org.apache.hadoop.hdds.utils.db.cache.CacheValue;
import org.apache.hadoop.ozone.om.OMMetadataManager;
import org.apache.hadoop.ozone.om.OMMetrics;
import org.apache.hadoop.ozone.om.OmSnapshotInternalMetrics;
import org.apache.hadoop.ozone.om.OzoneManager;
import org.apache.hadoop.ozone.om.exceptions.OMException;
import org.apache.hadoop.ozone.om.execution.flowcontrol.ExecutionContext;
Expand Down Expand Up @@ -85,7 +85,7 @@ private void updateSnapshotProperty(

@Override
public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, ExecutionContext context) {
OMMetrics omMetrics = ozoneManager.getMetrics();
OmSnapshotInternalMetrics omSnapshotIntMetrics = ozoneManager.getOmSnapshotIntMetrics();

OMClientResponse omClientResponse;
OMMetadataManager metadataManager = ozoneManager.getMetadataManager();
Expand Down Expand Up @@ -133,15 +133,15 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, Execut
metadataManager.getSnapshotInfoTable().addCacheEntry(
new CacheKey<>(snapshot.getKey()),
CacheValue.get(context.getIndex(), snapshot.getValue()));
omMetrics.incNumSnapshotSetProperties();
omSnapshotIntMetrics.incNumSnapshotSetProperties();
}

omClientResponse = new OMSnapshotSetPropertyResponse(omResponse.build(), snapshotInfoMap.values());
LOG.info("Successfully executed snapshotSetPropertyRequest: {{}}.", setSnapshotPropertyRequests);
} catch (UncheckedIOException | IOException ex) {
omClientResponse = new OMSnapshotSetPropertyResponse(
createErrorOMResponse(omResponse, ex));
omMetrics.incNumSnapshotSetPropertyFails();
omSnapshotIntMetrics.incNumSnapshotSetPropertyFails();
LOG.error("Failed to execute snapshotSetPropertyRequest: {{}}.", setSnapshotPropertyRequests, ex);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,9 @@ private SnapshotInfo deleteSnapshot(SnapshotInfo snapshotInfo, long transactionI

@Test
public void testValidateAndUpdateCacheWithNextSnapshotInactive() throws Exception {
long initialSnapshotMoveTableKeysCount = getOmSnapshotIntMetrics().getNumSnapshotMoveTableKeys();
long initialSnapshotMoveTableKeysFailCount = getOmSnapshotIntMetrics().getNumSnapshotMoveTableKeysFails();

createSnapshots(true);
snapshotInfo2 = deleteSnapshot(snapshotInfo2, 0);
OzoneManagerProtocolProtos.OMRequest omRequest = moveSnapshotTableKeyRequest(snapshotInfo1.getSnapshotId(),
Expand All @@ -92,6 +95,11 @@ public void testValidateAndUpdateCacheWithNextSnapshotInactive() throws Exceptio
Assertions.assertFalse(omClientResponse.getOMResponse().getSuccess());
Assertions.assertEquals(OzoneManagerProtocolProtos.Status.INVALID_SNAPSHOT_ERROR,
omClientResponse.getOMResponse().getStatus());

Assertions.assertEquals(initialSnapshotMoveTableKeysCount,
getOmSnapshotIntMetrics().getNumSnapshotMoveTableKeys());
Assertions.assertEquals(initialSnapshotMoveTableKeysFailCount + 1,
getOmSnapshotIntMetrics().getNumSnapshotMoveTableKeysFails());
}

@Test
Expand Down Expand Up @@ -186,6 +194,9 @@ public void testPreExecuteWithInvalidRenamePrefix() throws Exception {

@Test
public void testValidateAndUpdateCache() throws Exception {
long initialSnapshotMoveTableKeysCount = getOmSnapshotIntMetrics().getNumSnapshotMoveTableKeys();
long initialSnapshotMoveTableKeysFailCount = getOmSnapshotIntMetrics().getNumSnapshotMoveTableKeysFails();

createSnapshots(true);
String invalidVolumeName = UUID.randomUUID().toString();
String invalidBucketName = UUID.randomUUID().toString();
Expand All @@ -203,6 +214,11 @@ public void testValidateAndUpdateCache() throws Exception {
Assertions.assertTrue(omClientResponse.getOMResponse().getSuccess());
Assertions.assertEquals(OzoneManagerProtocolProtos.Status.OK,
omClientResponse.getOMResponse().getStatus());

Assertions.assertEquals(initialSnapshotMoveTableKeysCount + 1,
getOmSnapshotIntMetrics().getNumSnapshotMoveTableKeys());
Assertions.assertEquals(initialSnapshotMoveTableKeysFailCount,
getOmSnapshotIntMetrics().getNumSnapshotMoveTableKeysFails());
}

@Test
Expand Down
Loading
Loading