This is an automated email from the ASF dual-hosted git repository. cshannon pushed a commit to branch elasticity in repository https://gitbox.apache.org/repos/asf/accumulo.git
commit fc878c19d7cb9db7ca00f84b18131ee6712f3752 Merge: 8f68c3bade 8fe933a671 Author: Christopher L. Shannon <cshan...@apache.org> AuthorDate: Fri May 17 16:50:27 2024 -0400 Merge branch 'main' into elasticity .../server/compaction/PausedCompactionMetrics.java | 20 +++--- .../server/constraints/MetadataConstraints.java | 70 ++++++++++-------- .../constraints/MetadataConstraintsTest.java | 33 +++++++++ .../java/org/apache/accumulo/manager/Manager.java | 51 ++++++++++++- .../apache/accumulo/tserver/ScanServerMetrics.java | 10 +-- .../accumulo/tserver/ThriftScanClientHandler.java | 16 ++--- .../tserver/metrics/TabletServerScanMetrics.java | 84 +++++++++------------- .../tserver/metrics/TabletServerUpdateMetrics.java | 27 ++++--- .../apache/accumulo/tserver/tablet/TabletBase.java | 2 +- 9 files changed, 198 insertions(+), 115 deletions(-) diff --cc server/base/src/main/java/org/apache/accumulo/server/constraints/MetadataConstraints.java index c6a30040a1,1b99a5b307..7f1f5c21bc --- a/server/base/src/main/java/org/apache/accumulo/server/constraints/MetadataConstraints.java +++ b/server/base/src/main/java/org/apache/accumulo/server/constraints/MetadataConstraints.java @@@ -255,38 -235,6 +256,38 @@@ public class MetadataConstraints implem } else if (columnFamily.equals(ScanFileColumnFamily.NAME)) { violations = validateDataFileMetadata(violations, new String(columnUpdate.getColumnQualifier(), UTF_8)); + } else if (TabletColumnFamily.AVAILABILITY_COLUMN.equals(columnFamily, columnQualifier)) { + try { + TabletAvailabilityUtil.fromValue(new Value(columnUpdate.getValue())); + } catch (IllegalArgumentException e) { - violations = addViolation(violations, 10); ++ violations = addViolation(violations, 16); + } + } else if (ServerColumnFamily.OPID_COLUMN.equals(columnFamily, columnQualifier)) { + try { + TabletOperationId.validate(new String(columnUpdate.getValue(), UTF_8)); + } catch (IllegalArgumentException e) { + violations = addViolation(violations, 9); + } + } else if (ServerColumnFamily.SELECTED_COLUMN.equals(columnFamily, columnQualifier)) { + try { + SelectedFiles.from(new String(columnUpdate.getValue(), UTF_8)); + } catch (RuntimeException e) { + violations = addViolation(violations, 11); + } + } else if (CompactedColumnFamily.NAME.equals(columnFamily)) { + if (!FateId.isFateId(columnQualifier.toString())) { + violations = addViolation(violations, 13); + } + } else if (UserCompactionRequestedColumnFamily.NAME.equals(columnFamily)) { + if (!FateId.isFateId(columnQualifier.toString())) { + violations = addViolation(violations, 14); + } + } else if (SplitColumnFamily.UNSPLITTABLE_COLUMN.equals(columnFamily, columnQualifier)) { + try { + UnSplittableMetadata.toUnSplittable(new String(columnUpdate.getValue(), UTF_8)); + } catch (RuntimeException e) { + violations = addViolation(violations, 15); + } } else if (columnFamily.equals(BulkFileColumnFamily.NAME)) { if (!columnUpdate.isDeleted() && !checkedBulk) { /* @@@ -438,19 -388,9 +448,21 @@@ case 8: return "Bulk load mutation contains either inconsistent files or multiple fateTX ids"; case 9: - return "Invalid data file metadata format"; + return "Malformed operation id"; case 10: - return "Malformed availability value"; + return "Suspended timestamp is not valid"; + case 11: + return "Malformed file selection value"; + case 12: + return "Invalid data file metadata format"; + case 13: + return "Invalid compacted column"; + case 14: + return "Invalid user compaction requested column"; + case 15: + return "Invalid unsplittable column"; ++ case 16: ++ return "Malformed availability value"; } return null; } diff --cc server/base/src/test/java/org/apache/accumulo/server/constraints/MetadataConstraintsTest.java index b36fb31583,b7e2bd2a11..71e1ada06e --- a/server/base/src/test/java/org/apache/accumulo/server/constraints/MetadataConstraintsTest.java +++ b/server/base/src/test/java/org/apache/accumulo/server/constraints/MetadataConstraintsTest.java @@@ -27,31 -25,25 +27,36 @@@ import static org.junit.jupiter.api.Ass import java.lang.reflect.Method; import java.util.Base64; import java.util.List; +import java.util.Set; +import java.util.UUID; + import java.util.concurrent.TimeUnit; import org.apache.accumulo.core.data.Key; import org.apache.accumulo.core.data.Mutation; import org.apache.accumulo.core.data.Range; import org.apache.accumulo.core.data.Value; +import org.apache.accumulo.core.dataImpl.KeyExtent; +import org.apache.accumulo.core.fate.FateId; +import org.apache.accumulo.core.fate.FateInstanceType; import org.apache.accumulo.core.metadata.AccumuloTable; +import org.apache.accumulo.core.metadata.ReferencedTabletFile; import org.apache.accumulo.core.metadata.StoredTabletFile; + import org.apache.accumulo.core.metadata.SuspendingTServer; + import org.apache.accumulo.core.metadata.TServerInstance; import org.apache.accumulo.core.metadata.schema.DataFileValue; import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.BulkFileColumnFamily; +import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.CompactedColumnFamily; import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.CurrentLocationColumnFamily; import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.DataFileColumnFamily; import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.ScanFileColumnFamily; import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.ServerColumnFamily; +import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.SplitColumnFamily; + import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.SuspendLocationColumn; import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.TabletColumnFamily; +import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.UserCompactionRequestedColumnFamily; +import org.apache.accumulo.core.metadata.schema.SelectedFiles; +import org.apache.accumulo.core.metadata.schema.UnSplittableMetadata; + import org.apache.accumulo.core.util.time.SteadyTime; import org.apache.accumulo.server.ServerContext; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.Text; diff --cc server/manager/src/main/java/org/apache/accumulo/manager/Manager.java index 631daaddb1,a778744c0f..ac9b682cb9 --- a/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java @@@ -72,15 -70,13 +73,16 @@@ import org.apache.accumulo.core.data.Ke import org.apache.accumulo.core.data.TableId; import org.apache.accumulo.core.data.Value; import org.apache.accumulo.core.dataImpl.KeyExtent; -import org.apache.accumulo.core.fate.AgeOffStore; import org.apache.accumulo.core.fate.Fate; +import org.apache.accumulo.core.fate.FateCleaner; +import org.apache.accumulo.core.fate.FateId; +import org.apache.accumulo.core.fate.FateInstanceType; +import org.apache.accumulo.core.fate.FateStore; +import org.apache.accumulo.core.fate.MetaFateStore; +import org.apache.accumulo.core.fate.user.UserFateStore; + import org.apache.accumulo.core.fate.zookeeper.ZooCache.ZcStat; import org.apache.accumulo.core.fate.zookeeper.ZooReaderWriter; -import org.apache.accumulo.core.fate.zookeeper.ZooUtil; import org.apache.accumulo.core.fate.zookeeper.ZooUtil.NodeExistsPolicy; -import org.apache.accumulo.core.fate.zookeeper.ZooUtil.NodeMissingPolicy; import org.apache.accumulo.core.lock.ServiceLock; import org.apache.accumulo.core.lock.ServiceLock.LockLossReason; import org.apache.accumulo.core.lock.ServiceLock.ServiceLockPath;