diff --git a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/api/db.json b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/api/db.json index 7d73479a3524..d821e1377f3d 100644 --- a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/api/db.json +++ b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/api/db.json @@ -983,6 +983,234 @@ "keys": { "totalCount": 534, "keys": [ + { + "Volume": "vol-0-20448", + "Bucket": "bucket-0-12811", + "Key": "key-0-77505", + "DataSize": 10240, + "Versions": [ + 0 + ], + "Blocks": { + "0": [ + { + "containerID": 1, + "localID": 103206297511460860 + } + ] + }, + "CreationTime": "2019-11-26T21:18:43.688Z", + "ModificationTime": "2019-11-26T21:18:46.062Z" + }, + { + "Volume": "vol-0-20448", + "Bucket": "bucket-0-12811", + "Key": "key-21-64511", + "DataSize": 5692407, + "Versions": [ + 0 + ], + "Blocks": { + "0": [ + { + "containerID": 1, + "localID": 103206299949795380 + } + ] + }, + "CreationTime": "2019-11-26T21:19:20.855Z", + "ModificationTime": "2019-11-26T21:19:20.991Z" + }, + { + "Volume": "vol-0-20448", + "Bucket": "bucket-0-12811", + "Key": "key-22-69104", + "DataSize": 189407, + "Versions": [ + 0 + ], + "Blocks": { + "0": [ + { + "containerID": 1, + "localID": 103206300033091740 + } + ] + }, + "CreationTime": "2019-11-26T21:19:22.126Z", + "ModificationTime": "2019-11-26T21:19:22.251Z" + }, + { + "Volume": "vol-0-20448", + "Bucket": "bucket-0-12811", + "Key": "key-0-77505", + "DataSize": 10240, + "Versions": [ + 0 + ], + "Blocks": { + "0": [ + { + "containerID": 1, + "localID": 103206297511460860 + } + ] + }, + "CreationTime": "2019-11-26T21:18:43.688Z", + "ModificationTime": "2019-11-26T21:18:46.062Z" + }, + { + "Volume": "vol-0-20448", + "Bucket": "bucket-0-12811", + "Key": "key-21-64511", + "DataSize": 5692407, + "Versions": [ + 0 + ], + "Blocks": { + "0": [ + { + "containerID": 1, + "localID": 103206299949795380 + } + ] + }, + "CreationTime": "2019-11-26T21:19:20.855Z", + "ModificationTime": "2019-11-26T21:19:20.991Z" + }, + { + "Volume": "vol-0-20448", + "Bucket": "bucket-0-12811", + "Key": "key-22-69104", + "DataSize": 189407, + "Versions": [ + 0 + ], + "Blocks": { + "0": [ + { + "containerID": 1, + "localID": 103206300033091740 + } + ] + }, + "CreationTime": "2019-11-26T21:19:22.126Z", + "ModificationTime": "2019-11-26T21:19:22.251Z" + }, + { + "Volume": "vol-0-20448", + "Bucket": "bucket-0-12811", + "Key": "key-0-77505", + "DataSize": 10240, + "Versions": [ + 0 + ], + "Blocks": { + "0": [ + { + "containerID": 1, + "localID": 103206297511460860 + } + ] + }, + "CreationTime": "2019-11-26T21:18:43.688Z", + "ModificationTime": "2019-11-26T21:18:46.062Z" + }, + { + "Volume": "vol-0-20448", + "Bucket": "bucket-0-12811", + "Key": "key-21-64511", + "DataSize": 5692407, + "Versions": [ + 0 + ], + "Blocks": { + "0": [ + { + "containerID": 1, + "localID": 103206299949795380 + } + ] + }, + "CreationTime": "2019-11-26T21:19:20.855Z", + "ModificationTime": "2019-11-26T21:19:20.991Z" + }, + { + "Volume": "vol-0-20448", + "Bucket": "bucket-0-12811", + "Key": "key-22-69104", + "DataSize": 189407, + "Versions": [ + 0 + ], + "Blocks": { + "0": [ + { + "containerID": 1, + "localID": 103206300033091740 + } + ] + }, + "CreationTime": "2019-11-26T21:19:22.126Z", + "ModificationTime": "2019-11-26T21:19:22.251Z" + }, + { + "Volume": "vol-0-20448", + "Bucket": "bucket-0-12811", + "Key": "key-0-77505", + "DataSize": 10240, + "Versions": [ + 0 + ], + "Blocks": { + "0": [ + { + "containerID": 1, + "localID": 103206297511460860 + } + ] + }, + "CreationTime": "2019-11-26T21:18:43.688Z", + "ModificationTime": "2019-11-26T21:18:46.062Z" + }, + { + "Volume": "vol-0-20448", + "Bucket": "bucket-0-12811", + "Key": "key-21-64511", + "DataSize": 5692407, + "Versions": [ + 0 + ], + "Blocks": { + "0": [ + { + "containerID": 1, + "localID": 103206299949795380 + } + ] + }, + "CreationTime": "2019-11-26T21:19:20.855Z", + "ModificationTime": "2019-11-26T21:19:20.991Z" + }, + { + "Volume": "vol-0-20448", + "Bucket": "bucket-0-12811", + "Key": "key-22-69104", + "DataSize": 189407, + "Versions": [ + 0 + ], + "Blocks": { + "0": [ + { + "containerID": 1, + "localID": 103206300033091740 + } + ] + }, + "CreationTime": "2019-11-26T21:19:22.126Z", + "ModificationTime": "2019-11-26T21:19:22.251Z" + }, { "Volume": "vol-0-20448", "Bucket": "bucket-0-12811", @@ -1285,95 +1513,47 @@ "sizeDirectKey": 0 }, "metadata": { - "path": "", - "type": "DUMMY_TYPE", - "countStats": { - "numVolume": 100, - "numBucket": 200, - "numDir": 400, - "numKey": 80 - }, - "objectInfo": { - "versioningEnabled": false, - "metadata": { - + "path": "", + "type": "DUMMY_TYPE", + "countStats": { + "numVolume": 100, + "numBucket": 200, + "numDir": 400, + "numKey": 80 }, - "name": "fso-bucket", - "fileName": "file1", - "file": false, - "quotaInBytes": 1000000000, - "quotaInNamespace": 2000000000, - "usedNamespace": 10, - "creationTime": 1673415921920, - "modificationTime": 1673415921920, - "acls": [ - { - "type": "USER", - "name": "hadoop", - "aclScope": "ACCESS", - "aclList": [ - "ALL" - ] - }, - { - "type": "GROUP", - "name": "hadoop", - "aclScope": "ACCESS", - "aclList": [ - "ALL" - ] - } - ], - "keyLocationVersions": [ - { - "version": 0, - "locationList": [ - { - "blockID": { - "containerBlockID": { - "containerID": 1, - "localID": 111677748019200007 - }, - "blockCommitSequenceId": 18, - "containerID": 1, - "localID": 111677748019200007 - }, - "length": 3879, - "offset": 0, - "token": null, - "createVersion": 0, - "pipeline": null, - "partNumber": 0, - "containerID": 1, - "localID": 111677748019200007, - "blockCommitSequenceId": 18 - } - ], - "multipartKey": false, - "blocksLatestVersionOnly": [ - { - "blockID": { - "containerBlockID": { - "containerID": 1, - "localID": 111677748019200007 - }, - "blockCommitSequenceId": 18, - "containerID": 1, - "localID": 111677748019200007 - }, - "length": 3879, - "offset": 0, - "token": null, - "createVersion": 0, - "pipeline": null, - "partNumber": 0, - "containerID": 1, - "localID": 111677748019200007, - "blockCommitSequenceId": 18 - } - ], - "locationLists": [ - [ + "objectInfo": { + "versioningEnabled": false, + "metadata": {}, + "name": "fso-bucket", + "fileName": "file1", + "file": false, + "quotaInBytes": 1000000000, + "quotaInNamespace": 2000000000, + "usedNamespace": 10, + "creationTime": 1673415921920, + "modificationTime": 1673415921920, + "acls": [ + { + "type": "USER", + "name": "hadoop", + "aclScope": "ACCESS", + "aclList": [ + "ALL" + ] + }, + { + "type": "GROUP", + "name": "hadoop", + "aclScope": "ACCESS", + "aclList": [ + "ALL" + ] + } + ], + "keyLocationVersions": [ + { + "version": 0, + "locationList": [ { "blockID": { "containerBlockID": { @@ -1394,32 +1574,78 @@ "localID": 111677748019200007, "blockCommitSequenceId": 18 } - ] - ], - "locationListCount": 1 - } - ], - "volumeName": "volume1", - "bucketName": "fso-bucket", - "keyName": "file1", - "dataSize": 18513, - "storageType": "DISK", - "versioning": false, - "usedBytes": null, - "encryptionInfo": null, - "replicationConfig": { - "replicationFactor": "THREE", - "requiredNodes": 3, - "replicationType": "RATIS" - }, - "encInfo": null, - "sourceVolume": null, - "sourceBucket": null, - "bucketLayout": "FILE_SYSTEM_OPTIMIZED", - "owner": "hadoop", - "volume": "vol1" - }, - "status": "OK" + ], + "multipartKey": false, + "blocksLatestVersionOnly": [ + { + "blockID": { + "containerBlockID": { + "containerID": 1, + "localID": 111677748019200007 + }, + "blockCommitSequenceId": 18, + "containerID": 1, + "localID": 111677748019200007 + }, + "length": 3879, + "offset": 0, + "token": null, + "createVersion": 0, + "pipeline": null, + "partNumber": 0, + "containerID": 1, + "localID": 111677748019200007, + "blockCommitSequenceId": 18 + } + ], + "locationLists": [ + [ + { + "blockID": { + "containerBlockID": { + "containerID": 1, + "localID": 111677748019200007 + }, + "blockCommitSequenceId": 18, + "containerID": 1, + "localID": 111677748019200007 + }, + "length": 3879, + "offset": 0, + "token": null, + "createVersion": 0, + "pipeline": null, + "partNumber": 0, + "containerID": 1, + "localID": 111677748019200007, + "blockCommitSequenceId": 18 + } + ] + ], + "locationListCount": 1 + } + ], + "volumeName": "volume1", + "bucketName": "fso-bucket", + "keyName": "file1", + "dataSize": 18513, + "storageType": "DISK", + "versioning": false, + "usedBytes": null, + "encryptionInfo": null, + "replicationConfig": { + "replicationFactor": "THREE", + "requiredNodes": 3, + "replicationType": "RATIS" + }, + "encInfo": null, + "sourceVolume": null, + "sourceBucket": null, + "bucketLayout": "FILE_SYSTEM_OPTIMIZED", + "owner": "hadoop", + "volume": "vol1" + }, + "status": "OK" }, "quota": { "allowed": 1000000000, @@ -1603,7 +1829,7 @@ "lastUpdatedSeqNumber": 0 } ], - "unhealthyContainers":{ + "unhealthyContainers": { "missingCount": 3, "underReplicatedCount": 2, "overReplicatedCount": 2, @@ -2413,7 +2639,7 @@ "minAccessCount": 1, "maxAccessCount": 39202 }, - "keyHeatmap": { + "keyHeatmap": { "label": "root", "children": [ { @@ -3182,5 +3408,3075 @@ }, "disabledFeatures": [ "FLAG1" + ], + + "keysOpenSummary": { + "keysSummary": { + "totalUnreplicatedDataSize": 1000, + "totalReplicatedDataSize": 30000000, + "totalOpenKeys": 10 + }, + "lastKey": "", + "replicatedDataSize": 0, + "unreplicatedDataSize": 0, + "status": "OK" + }, + "keysdeletePendingSummary":{ + "keysSummary": { + "totalUnreplicatedDataSize": 29291, + "totalReplicatedDataSize": 87873, + "totalDeletedKeys": 3 + }, + "lastKey": "/s3v/fso-bucket/dira/dira13/key3/-9223372036854762239", + "replicatedDataSize": 87873, + "unreplicatedDataSize": 29291, + "status": "OK" + }, + "omMismatch":{ + "lastKey":11, + "containerDiscrepancyInfo": [ + { + "containerId": 1, + "numberOfKeys": 1, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + }, + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-613724nn" + }, + + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + + ], + "existsAt": "SCM" + }, + { + "containerId": 2, + "numberOfKeys": 2, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "SCM" + }, + { + "containerId": 3, + "numberOfKeys": 3, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "SCM" + }, + { + "containerId": 4, + "numberOfKeys": 4, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "SCM" + }, + { + "containerId": 5, + "numberOfKeys": 5, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "SCM" + }, + { + "containerId": 6, + "numberOfKeys": 6, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "SCM" + }, + { + "containerId": 7, + "numberOfKeys": 7, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "SCM" + }, + { + "containerId": 8, + "numberOfKeys": 8, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "SCM" + }, + { + "containerId": 9, + "numberOfKeys": 9, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "SCM" + }, + { + "containerId": 10, + "numberOfKeys": 10, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "SCM" + } + ] + }, + "omMismatch1":{ + "lastKey":21, + "containerDiscrepancyInfo": [ + { + "containerId": 11, + "numberOfKeys": 1, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + }, + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-613724nn" + }, + + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + + ], + "existsAt": "SCM" + }, + { + "containerId": 12, + "numberOfKeys": 2, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "SCM" + }, + { + "containerId": 13, + "numberOfKeys": 3, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "SCM" + }, + { + "containerId": 14, + "numberOfKeys": 4, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "SCM" + }, + { + "containerId": 15, + "numberOfKeys": 5, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "SCM" + }, + { + "containerId": 16, + "numberOfKeys": 6, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "SCM" + }, + { + "containerId": 17, + "numberOfKeys": 7, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "SCM" + }, + { + "containerId": 18, + "numberOfKeys": 8, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "SCM" + }, + { + "containerId": 19, + "numberOfKeys": 9, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "SCM" + }, + { + "containerId": 20, + "numberOfKeys": 10, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "SCM" + }, + { + "containerId": 21, + "numberOfKeys": 11, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "SCM" + }, + { + "containerId": 22, + "numberOfKeys": 12, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "SCM" + } + ] + }, + "omMismatch2":{ + "lastKey": null, + "containerDiscrepancyInfo": [] + }, + "scmMismatch":{ + "lastKey":11, + "containerDiscrepancyInfo": [ + { + "containerId": 1, + "numberOfKeys": 1, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + }, + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-613724nn" + }, + + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + + ], + "existsAt": "OM" + }, + { + "containerId": 2, + "numberOfKeys": 2, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + }, + { + "containerId": 3, + "numberOfKeys": 3, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + }, + { + "containerId": 4, + "numberOfKeys": 4, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + }, + { + "containerId": 5, + "numberOfKeys": 5, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + }, + { + "containerId": 6, + "numberOfKeys": 6, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + }, + { + "containerId": 7, + "numberOfKeys": 7, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + }, + { + "containerId": 8, + "numberOfKeys": 8, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + }, + { + "containerId": 9, + "numberOfKeys": 9, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + }, + { + "containerId": 10, + "numberOfKeys": 10, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + } ] + }, + "scmMismatch1":{ + "lastKey":21, + "containerDiscrepancyInfo": [ + { + "containerId": 11, + "numberOfKeys": 1, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + }, + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-613724nn" + }, + + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + + ], + "existsAt": "OM" + }, + { + "containerId": 12, + "numberOfKeys": 2, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + }, + { + "containerId": 13, + "numberOfKeys": 3, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + }, + { + "containerId": 14, + "numberOfKeys": 4, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + }, + { + "containerId": 15, + "numberOfKeys": 5, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + }, + { + "containerId": 16, + "numberOfKeys": 6, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + }, + { + "containerId": 17, + "numberOfKeys": 7, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + }, + { + "containerId": 18, + "numberOfKeys": 8, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + }, + { + "containerId": 19, + "numberOfKeys": 9, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + }, + { + "containerId": 20, + "numberOfKeys": 10, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + } + ] + }, + "scmMismatch2":{ + "lastKey":31, + "containerDiscrepancyInfo": [ + { + "containerId": 21, + "numberOfKeys": 1, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + }, + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-613724nn" + }, + + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + + ], + "existsAt": "OM" + }, + { + "containerId": 22, + "numberOfKeys": 2, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + }, + { + "containerId": 23, + "numberOfKeys": 3, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + }, + { + "containerId": 24, + "numberOfKeys": 4, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + }, + { + "containerId": 25, + "numberOfKeys": 5, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + }, + { + "containerId": 26, + "numberOfKeys": 6, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + }, + { + "containerId": 27, + "numberOfKeys": 7, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + }, + { + "containerId": 28, + "numberOfKeys": 8, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + }, + { + "containerId": 29, + "numberOfKeys": 9, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + }, + { + "containerId": 30, + "numberOfKeys": 10, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + } + ] + }, + "scmMismatch3":{ + "lastKey":41, + "containerDiscrepancyInfo": [ + { + "containerId": 31, + "numberOfKeys": 1, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + }, + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-613724nn" + }, + + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + + ], + "existsAt": "OM" + }, + { + "containerId": 32, + "numberOfKeys": 2, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + }, + { + "containerId": 33, + "numberOfKeys": 3, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + }, + { + "containerId": 34, + "numberOfKeys": 4, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + }, + { + "containerId": 35, + "numberOfKeys": 5, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + }, + { + "containerId": 36, + "numberOfKeys": 6, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + }, + { + "containerId": 37, + "numberOfKeys": 7, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + }, + { + "containerId": 38, + "numberOfKeys": 8, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + }, + { + "containerId": 39, + "numberOfKeys": 9, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + }, + { + "containerId": 40, + "numberOfKeys": 10, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + } + ] + }, + "scmMismatch4":{ + "lastKey":51, + "containerDiscrepancyInfo": [ + { + "containerId": 41, + "numberOfKeys": 1, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + }, + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-613724nn" + }, + + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + + ], + "existsAt": "OM" + }, + { + "containerId": 42, + "numberOfKeys": 2, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + }, + { + "containerId": 43, + "numberOfKeys": 3, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + }, + { + "containerId": 44, + "numberOfKeys": 4, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + }, + { + "containerId": 45, + "numberOfKeys": 5, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + }, + { + "containerId": 46, + "numberOfKeys": 6, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + }, + { + "containerId": 47, + "numberOfKeys": 7, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + }, + { + "containerId": 48, + "numberOfKeys": 8, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + }, + { + "containerId": 49, + "numberOfKeys": 9, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + }, + { + "containerId": 50, + "numberOfKeys": 10, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ], + "existsAt": "OM" + } + ] + }, + "scmMismatch5":{ + "lastKey": null, + "containerDiscrepancyInfo": [] + }, + "nonFSO": { + "lastKey": "/-9223372036854775552/-9223372036854775040/-9223372036852420095/2411/1105696238501917", + "keysSummary": { + "totalUnreplicatedDataSize": 1000, + "totalReplicatedDataSize": 3000, + "totalOpenKeys": 0 + }, + "nonFSO": [ + { + "key": "/-9223372036854775552/-9223372036854775040/-9223372036852420095/01/110569623850191713", + "path": "nonfso 1", + "inStateSince": 1686156886632, + "size": 268435456, + "replicatedSize": 268435456, + "replicationInfo": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + } + }, + { + "key": "/-9223372036854775552/-9223372036854775040/-9223372036852420095/2439/110569623850191713", + "path": "nonfso 2", + "inStateSince": 1686156886632, + "size": 268435456, + "replicatedSize": 268435456, + "replicationInfo": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + } + } + ], + "status": "OK" + }, + "nonFSO1": { + "lastKey": "1/-9223372036854775552/-9223372036854775040/-9223372036852420095/2421/1105696238501917", + "nonFSO": [ + { + "key": "/-9223372036854775552/-9223372036854775040/-9223372036852420095/2440/110569623850191713", + "path": "nonfso 11", + "inStateSince": 1686156886632, + "size": 268435456, + "replicatedSize": 268435456, + "replicationInfo": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + } + }, + { + "key": "/-9223372036854775552/-9223372036854775040/-9223372036852420095/2441/110569623850191713", + "path": "nonfso 12", + "inStateSince": 1686156886632, + "size": 268435456, + "replicatedSize": 268435456, + "replicationInfo": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + } + } + ], + "status": "OK" + }, + "nonFSO2": { + "lastKey": "", + "nonFSO": [] + }, + "fso": { + "lastKey": "/-9223372036854775552/-9223372036854775040/-9223372036852420095/2411/110569623850191713", + "fso": [ + { + "key": "/-9223372036854775552/-9223372036854775040/-9223372036852420095/2401/110569623850191713", + "path": "1", + "inStateSince": 1686156886632, + "size": 268435456, + "replicatedSize": 268435456, + "replicationInfo": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + } + }, + { + "key": "/-9223372036854775552/-9223372036854775040/-9223372036852420095/2402/110569623850191713", + "path": "2", + "inStateSince": 1686156887186, + "size": 268435456, + "replicatedSize": 268435456, + "replicationInfo": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + } + + }, + { + "key": "/-9223372036854775552/-9223372036854775040/-9223372036852420095/2403/110569623850191713", + "path": "3", + "inStateSince": 1686156887186, + "size": 268435456, + "replicatedSize": 268435456, + "replicationInfo": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + } + + }, + { + "key": "/-9223372036854775552/-9223372036854775040/-9223372036852420095/2404/110569623850191713", + "path": "4", + "inStateSince": 1686156887186, + "size": 268435456, + "replicatedSize": 268435456, + "replicationInfo": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + } + }, + { + "key": "/-9223372036854775552/-9223372036854775040/-9223372036852420095/2405/110569623850191713", + "path": "5", + "inStateSince": 1686156887186, + "size": 268435456, + "replicatedSize": 268435456, + "replicationInfo": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + } + + }, + { + "key": "/-9223372036854775552/-9223372036854775040/-9223372036852420095/2406/110569623850191713", + "path": "6", + "inStateSince": 1686156887186, + "size": 268435456, + "replicatedSize": 268435456, + "replicationInfo": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + } + + }, + { + "key": "/-9223372036854775552/-9223372036854775040/-9223372036852420095/2407/110569623850191713", + "path": "7", + "inStateSince": 1686156887186, + "size": 268435456, + "replicatedSize": 268435456, + "replicationInfo": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + } + + }, + { + "key": "/-9223372036854775552/-9223372036854775040/-9223372036852420095/2408/110569623850191713", + "path": "8", + "inStateSince": 1686156887186, + "size": 268435456, + "replicatedSize": 268435456, + "replicationInfo": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + } + + }, + { + "key": "/-9223372036854775552/-9223372036854775040/-9223372036852420095/2409/110569623850191713", + "path": "9", + "inStateSince": 1686156887186, + "size": 268435456, + "replicatedSize": 268435456, + "replicationInfo": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + } + + }, + { + "key": "fso 10", + "path": "10", + "inStateSince": 1686156887186, + "size": 268435456, + "replicatedSize": 268435456, + "replicationInfo": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + } + + } + ], + "status": "OK" + }, + "fso1": { + "lastKey": "/-9223372036854775552/-9223372036854775040/-9223372036852420095/2421/110569623850191713", + "fso": [ + { + "key": "/-9223372036854775552/-9223372036854775040/-9223372036852420095/2411/110569623850191713", + "path": "11", + "inStateSince": 1686156886632, + "size": 268435456, + "replicatedSize": 268435456, + "replicationInfo": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + } + }, + { + "key": "fso 12", + "path": "12", + "inStateSince": 1686156887186, + "size": 268435456, + "replicatedSize": 268435456, + "replicationInfo": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + } + }, + { + "key": "fso 13", + "path": "13", + "inStateSince": 1686156886632, + "size": 268435456, + "replicatedSize": 268435456, + "replicationInfo": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + } + }, + { + "key": "fso 14", + "path": "14", + "inStateSince": 1686156887186, + "size": 268435456, + "replicatedSize": 268435456, + "replicationInfo": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + } + }, + { + "key": "fso 15", + "path": "15", + "inStateSince": 1686156886632, + "size": 268435456, + "replicatedSize": 268435456, + "replicationInfo": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + } + }, + { + "key": "fso 16 key", + "path": "16", + "inStateSince": 1686156887186, + "size": 268435456, + "replicatedSize": 268435456, + "replicationInfo": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + } + }, + { + "key": "fso 17 key", + "path": "17", + "inStateSince": 1686156886632, + "size": 268435456, + "replicatedSize": 268435456, + "replicationInfo": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + } + }, + { + "key": "fso 18 key", + "path": "18", + "inStateSince": 1686156887186, + "size": 268435456, + "replicatedSize": 268435456, + "replicationInfo": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + } + }, + { + "key": "fso 19 key", + "path": "19", + "inStateSince": 1686156886632, + "size": 268435456, + "replicatedSize": 268435456, + "replicationInfo": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + } + }, + { + "key": "fso 20 key", + "path": "20", + "inStateSince": 1686156887186, + "size": 268435456, + "replicatedSize": 268435456, + "replicationInfo": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + } + }, + { + "key": "fso 21", + "path": "21", + "inStateSince": 1686156886632, + "size": 268435456, + "replicatedSize": 268435456, + "replicationInfo": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + } + }, + { + "key": "fso 22", + "path": "22", + "inStateSince": 1686156887186, + "size": 268435456, + "replicatedSize": 268435456, + "replicationInfo": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + } + }, + { + "key": "fso 23", + "path": "23", + "inStateSince": 1686156887186, + "size": 268435456, + "replicatedSize": 268435456, + "replicationInfo": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + } + }, + { + "key": "fso 24", + "path": "24", + "inStateSince": 1686156887186, + "size": 268435456, + "replicatedSize": 268435456, + "replicationInfo": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + } + }, + { + "key": "fso 25", + "path": "25", + "inStateSince": 1686156887186, + "size": 268435456, + "replicatedSize": 268435456, + "replicationInfo": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + } + }, + { + "key": "fso 26", + "path": "26", + "inStateSince": 1686156887186, + "size": 268435456, + "replicatedSize": 268435456, + "replicationInfo": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + } + }, + { + "key": "fso 27", + "path": "27", + "inStateSince": 1686156887186, + "size": 268435456, + "replicatedSize": 268435456, + "replicationInfo": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + } + }, + { + "key": "fso 28", + "path": "28", + "inStateSince": 1686156887186, + "size": 268435456, + "replicatedSize": 268435456, + "replicationInfo": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + } + }, + { + "key": "fso 29", + "path": "29", + "inStateSince": 1686156887186, + "size": 268435456, + "replicatedSize": 268435456, + "replicationInfo": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + } + }, + { + "key": "fso 30", + "path": "30", + "inStateSince": 1686156887186, + "size": 268435456, + "replicatedSize": 268435456, + "replicationInfo": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + } + }, + { + "key": "fso 31", + "path": "31", + "inStateSince": 1686156887186, + "size": 268435456, + "replicatedSize": 268435456, + "replicationInfo": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + } + }, + { + "key": "fso 32", + "path": "32", + "inStateSince": 1686156887186, + "size": 268435456, + "replicatedSize": 268435456, + "replicationInfo": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + } + }, + { + "key": "fso 33", + "path": "33", + "inStateSince": 1686156887186, + "size": 268435456, + "replicatedSize": 268435456, + "replicationInfo": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + } + } + ], + "status": "OK" + }, + "fso2": { + "lastKey": "", + "fso": [] + }, + "keydeletePending":{ + "lastKey": "/volume/bucket1/rcmeevblsf/106/-9223372036843950335", + "keysSummary": { + "totalUnreplicatedDataSize": 29291, + "totalReplicatedDataSize": 87873, + "totalDeletedKeys": 3 + }, + "replicatedDataSize": 300000000, + "unreplicatedDataSize": 100000000, + "deletedKeyInfo": [ + { + "omKeyInfoList": [ + { + "objectID": -9223372036844470271, + "updateID": 40429, + "parentObjectID": -9223372036844472575, + "volumeName": "volume", + "bucketName": "bucket1", + "keyName": "List1key1", + "dataSize": 10000000, + "creationTime": 1687189663661, + "modificationTime": 1687189672598, + "replicationConfig": { + "replicationFactor": "THREE", + "requiredNodes": 3, + "replicationType": "RATIS" + }, + "fileChecksum": null, + "fileName": "List1File1", + "file": false, + "path": "-9223372036844472575/0", + "hsync": false, + "replicatedSize": 30000000, + "fileEncryptionInfo": null, + "objectInfo": "OMKeyInfo{volume='volume', bucket='bucket1', key='rcmeevblsf/0', dataSize='10000000', creationTime='1687189663661', objectID='-9223372036844470271', parentID='-9223372036844472575', replication='RATIS/THREE', fileChecksum='null}", + "updateIDset": true + }, + { + "objectID": -9223372036844470271, + "updateID": 40429, + "parentObjectID": -9223372036844472575, + "volumeName": "volume", + "bucketName": "bucket1", + "keyName": "List1key1", + "dataSize": 20000000, + "creationTime": 1687189663661, + "modificationTime": 1687189672598, + "replicationConfig": { + "replicationFactor": "THREE", + "requiredNodes": 3, + "replicationType": "RATIS" + }, + "fileChecksum": null, + "fileName": "List1File1", + "file": false, + "path": "-9223372036844472575/0", + "hsync": false, + "replicatedSize": 30000000, + "fileEncryptionInfo": null, + "objectInfo": "OMKeyInfo{volume='volume', bucket='bucket1', key='rcmeevblsf/0', dataSize='10000000', creationTime='1687189663661', objectID='-9223372036844470271', parentID='-9223372036844472575', replication='RATIS/THREE', fileChecksum='null}", + "updateIDset": true + }, + { + "objectID": -9223372036844470271, + "updateID": 40429, + "parentObjectID": -9223372036844472575, + "volumeName": "volume", + "bucketName": "bucket1", + "keyName": "List1key1", + "dataSize": 30000000, + "creationTime": 1687189663661, + "modificationTime": 1687189672598, + "replicationConfig": { + "replicationFactor": "THREE", + "requiredNodes": 3, + "replicationType": "RATIS" + }, + "fileChecksum": null, + "fileName": "List1File1", + "file": false, + "path": "-9223372036844472575/0", + "hsync": false, + "replicatedSize": 30000000, + "fileEncryptionInfo": null, + "objectInfo": "OMKeyInfo{volume='volume', bucket='bucket1', key='rcmeevblsf/0', dataSize='10000000', creationTime='1687189663661', objectID='-9223372036844470271', parentID='-9223372036844472575', replication='RATIS/THREE', fileChecksum='null}", + "updateIDset": true + } + ] + }, + { + "omKeyInfoList": [ + { + + "objectID": -9223372036844470015, + "updateID": 40407, + "parentObjectID": -9223372036844472575, + "volumeName": "volume", + "bucketName": "bucket1", + "keyName": "List2Key1", + "dataSize": 10000000, + "creationTime": 1687189663664, + "modificationTime": 1687189671884, + "replicationConfig": { + "replicationFactor": "THREE", + "requiredNodes": 3, + "replicationType": "RATIS" + }, + "fileChecksum": null, + "fileName": "List2File2", + "file": false, + "path": "-9223372036844472575/1", + "hsync": false, + "replicatedSize": 30000000, + "fileEncryptionInfo": null, + "objectInfo": "OMKeyInfo{volume='volume', bucket='bucket1', key='rcmeevblsf/1', dataSize='10000000', creationTime='1687189663664', objectID='-9223372036844470015', parentID='-9223372036844472575', replication='RATIS/THREE', fileChecksum='null}", + "updateIDset": true + } + ] + }, + { + "omKeyInfoList": [ + { + "objectID": -9223372036844432639, + "updateID": 40601, + "parentObjectID": -9223372036844472575, + "volumeName": "volume", + "bucketName": "bucket1", + "keyName": "List3Key1", + "dataSize": 10000000, + "creationTime": 1687189671823, + "modificationTime": 1687189676084, + "replicationConfig": { + "replicationFactor": "THREE", + "requiredNodes": 3, + "replicationType": "RATIS" + }, + "fileChecksum": null, + "fileName": "List3File1", + "file": false, + "path": "-9223372036844472575/10", + "hsync": false, + "replicatedSize": 30000000 + }, + { + "objectID": -9223372036844432639, + "updateID": 40601, + "parentObjectID": -9223372036844472575, + "volumeName": "volume", + "bucketName": "bucket1", + "keyName": "List3Key1", + "dataSize": 20000000, + "creationTime": 1687189671823, + "modificationTime": 1687189676084, + "replicationConfig": { + "replicationFactor": "THREE", + "requiredNodes": 3, + "replicationType": "RATIS" + }, + "fileChecksum": null, + "fileName": "List3File1", + "file": false, + "path": "-9223372036844472575/10", + "hsync": false, + "replicatedSize": 30000000 + } + ] + }, + { + "omKeyInfoList": [ + { + "objectID": -9223372036843970815, + "updateID": 42403, + "parentObjectID": -9223372036844472575, + "volumeName": "volume", + "bucketName": "bucket1", + "keyName": "List4Key1", + "dataSize": 10000000, + "creationTime": 1687189713476, + "modificationTime": 1687189717756, + "replicationConfig": { + "replicationFactor": "THREE", + "requiredNodes": 3, + "replicationType": "RATIS" + }, + "fileChecksum": null, + "fileName": "List4File3", + "file": false, + "path": "-9223372036844472575/100" + } + ] + }, + { + "omKeyInfoList": [ + { + "objectID": -9223372036843964159, + "updateID": 42443, + "parentObjectID": -9223372036844472575, + "volumeName": "volume", + "bucketName": "bucket1", + "keyName": "List5Key1", + "dataSize": 10000000, + "creationTime": 1687189714437, + "modificationTime": 1687189719458, + "replicationConfig": { + "replicationFactor": "THREE", + "requiredNodes": 3, + "replicationType": "RATIS" + }, + "fileChecksum": null, + "fileName": "List5File1", + "file": false, + "path": "-9223372036844472575/101" + } + ] + }, + { + "omKeyInfoList": [ + { + "objectID": -9223372036843961087, + "updateID": 42450, + "parentObjectID": -9223372036844472575, + "volumeName": "volume", + "bucketName": "bucket1", + "keyName": "List6Key1", + "dataSize": 10000000, + "creationTime": 1687189714558, + "modificationTime": 1687189719533, + "replicationConfig": { + "replicationFactor": "THREE", + "requiredNodes": 3, + "replicationType": "RATIS" + }, + "fileChecksum": null, + "fileName": "List6File1", + "file": false, + "path": "-9223372036844472575/102", + "hsync": false, + "replicatedSize": 30000000, + "fileEncryptionInfo": null, + "objectInfo": "OMKeyInfo{volume='volume', bucket='bucket1', key='rcmeevblsf/102', dataSize='10000000', creationTime='1687189714558', objectID='-9223372036843961087', parentID='-9223372036844472575', replication='RATIS/THREE', fileChecksum='null}", + "updateIDset": true + } + ] + }, + { + "omKeyInfoList": [ + { + "objectID": -9223372036843959807, + "updateID": 42449, + "parentObjectID": -9223372036844472575, + "volumeName": "volume", + "bucketName": "bucket1", + "keyName": "List7Key1", + "dataSize": 10000000, + "creationTime": 1687189714594, + "modificationTime": 1687189719533, + "replicationConfig": { + "replicationFactor": "THREE", + "requiredNodes": 3, + "replicationType": "RATIS" + }, + "fileChecksum": null, + "fileName": "List7File1", + "file": false, + "path": "-9223372036844472575/103", + "hsync": false, + "replicatedSize": 30000000, + "fileEncryptionInfo": null, + "objectInfo": "OMKeyInfo{volume='volume', bucket='bucket1', key='rcmeevblsf/103', dataSize='10000000', creationTime='1687189714594', objectID='-9223372036843959807', parentID='-9223372036844472575', replication='RATIS/THREE', fileChecksum='null}", + "updateIDset": true + } + ] + }, + { + "omKeyInfoList": [ + { + "objectID": -9223372036843953919, + "updateID": 42467, + "parentObjectID": -9223372036844472575, + "volumeName": "volume", + "bucketName": "bucket1", + "keyName": "List8Key1", + "dataSize": 10000000, + "creationTime": 1687189715040, + "modificationTime": 1687189720085, + "replicationConfig": { + "replicationFactor": "THREE", + "requiredNodes": 3, + "replicationType": "RATIS" + }, + "fileChecksum": null, + "fileName": "List8File1", + "file": false, + "path": "-9223372036844472575/104", + "hsync": false, + "replicatedSize": 30000000, + "fileEncryptionInfo": null, + "objectInfo": "OMKeyInfo{volume='volume', bucket='bucket1', key='rcmeevblsf/104', dataSize='10000000', creationTime='1687189715040', objectID='-9223372036843953919', parentID='-9223372036844472575', replication='RATIS/THREE', fileChecksum='null}", + "updateIDset": true + } + ] + }, + { + "omKeyInfoList": [ + { + "objectID": -9223372036843951359, + "updateID": 42483, + "parentObjectID": -9223372036844472575, + "volumeName": "volume", + "bucketName": "bucket1", + "keyName": "List9Key1", + "dataSize": 10000000, + "creationTime": 1687189715391, + "modificationTime": 1687189720373, + "replicationConfig": { + "replicationFactor": "THREE", + "requiredNodes": 3, + "replicationType": "RATIS" + }, + "fileChecksum": null, + "fileName": "List9File9", + "file": false, + "path": "-9223372036844472575/105", + "hsync": false, + "replicatedSize": 30000000, + "fileEncryptionInfo": null, + "objectInfo": "OMKeyInfo{volume='volume', bucket='bucket1', key='rcmeevblsf/105', dataSize='10000000', creationTime='1687189715391', objectID='-9223372036843951359', parentID='-9223372036844472575', replication='RATIS/THREE', fileChecksum='null}", + "updateIDset": true + } + ] + }, + { + "omKeyInfoList": [ + { + "objectID": -9223372036843950335, + "updateID": 42478, + "parentObjectID": -9223372036844472575, + "volumeName": "volume", + "bucketName": "bucket1", + "keyName": "List10Key1", + "dataSize": 10000000, + "creationTime": 1687189715413, + "modificationTime": 1687189720247, + "replicationConfig": { + "replicationFactor": "THREE", + "requiredNodes": 3, + "replicationType": "RATIS" + }, + "fileChecksum": null, + "fileName": "List10File1", + "file": false, + "path": "-9223372036844472575/106", + "hsync": false, + "replicatedSize": 30000000, + "fileEncryptionInfo": null, + "objectInfo": "OMKeyInfo{volume='volume', bucket='bucket1', key='rcmeevblsf/106', dataSize='10000000', creationTime='1687189715413', objectID='-9223372036843950335', parentID='-9223372036844472575', replication='RATIS/THREE', fileChecksum='null}", + "updateIDset": true + } + ] + } + ], + "status": "OK" + }, + + "keydeletePending1": { + "lastKey":"/-9223372036854775552/-9223372036854775040/-9223372036852420095/2421/110569623850191", + "replicatedTotal": -1530804718628866300, + "unreplicatedTotal": -1530804718628866300, + "deletedKeyInfo": [ + { + "omKeyInfoList": [ + { + "objectID": 0, + "updateID": 0, + "parentObjectID": 0, + "volumeName": "sampleVol", + "bucketName": "bucketOne", + "keyName": "key22", + "dataSize": 1000, + "keyLocationVersions": [], + "creationTime": 0, + "modificationTime": 0, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "STANDALONE" + }, + "fileChecksum": null, + "fileName": "file_key22", + "acls": [], + "path": "0/key_one", + "file": false, + "latestVersionLocations": null, + "replicatedSize": 120000000, + "fileEncryptionInfo": null, + "updateIDset": false + }, + { + "metadata": {}, + "objectID": 0, + "updateID": 0, + "parentObjectID": 0, + "volumeName": "sampleVol", + "bucketName": "bucketOne", + "keyName": "key22", + "dataSize": 2000, + "keyLocationVersions": [], + "creationTime": 0, + "modificationTime": 0, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "STANDALONE" + }, + "fileChecksum": null, + "fileName": "file_key22", + "acls": [], + "path": "0/key_one", + "file": false, + "latestVersionLocations": null, + "replicatedSize": -1530804718628866300, + "fileEncryptionInfo": null, + "updateIDset": false + } + ] + } + ], + "status": "OK" + }, + "keydeletePending2": { + "lastKey":"31", + "replicatedTotal": -1530804718628866300, + "unreplicatedTotal": -1530804718628866300, + "deletedKeyInfo": [ + { + "omKeyInfoList": [ + { + "metadata": {}, + "objectID": 0, + "updateID": 0, + "parentObjectID": 0, + "volumeName": "sampleVol", + "bucketName": "bucketOne", + "keyName": "key_31", + "dataSize": -1530804718628866300, + "keyLocationVersions": [], + "creationTime": 0, + "modificationTime": 0, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "STANDALONE" + }, + "fileChecksum": null, + "fileName": "key_one", + "acls": [], + "path": "0/key_one", + "file": false, + "latestVersionLocations": null, + "replicatedSize": -1530804718628866300, + "fileEncryptionInfo": null, + "updateIDset": false + }, + { + "metadata": {}, + "objectID": 0, + "updateID": 0, + "parentObjectID": 0, + "volumeName": "sampleVol", + "bucketName": "bucketOne", + "keyName": "key_32", + "dataSize": -1530804718628866300, + "keyLocationVersions": [], + "creationTime": 0, + "modificationTime": 0, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "STANDALONE" + }, + "fileChecksum": null, + "fileName": "key_two", + "acls": [], + "path": "0/key_two", + "file": false, + "latestVersionLocations": null, + "replicatedSize": -1530804718628866300, + "fileEncryptionInfo": null, + "updateIDset": false + }, + { + "metadata": {}, + "objectID": 0, + "updateID": 0, + "parentObjectID": 0, + "volumeName": "sampleVol", + "bucketName": "bucketOne", + "keyName": "key_33", + "dataSize": -1530804718628866300, + "keyLocationVersions": [], + "creationTime": 0, + "modificationTime": 0, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "STANDALONE" + }, + "fileChecksum": null, + "fileName": "key_one", + "acls": [], + "path": "0/key_one", + "file": false, + "latestVersionLocations": null, + "replicatedSize": -1530804718628866300, + "fileEncryptionInfo": null, + "updateIDset": false + }, + { + "metadata": {}, + "objectID": 0, + "updateID": 0, + "parentObjectID": 0, + "volumeName": "sampleVol", + "bucketName": "bucketOne", + "keyName": "key_34", + "dataSize": -1530804718628866300, + "keyLocationVersions": [], + "creationTime": 0, + "modificationTime": 0, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "STANDALONE" + }, + "fileChecksum": null, + "fileName": "key_two", + "acls": [], + "path": "0/key_two", + "file": false, + "latestVersionLocations": null, + "replicatedSize": -1530804718628866300, + "fileEncryptionInfo": null, + "updateIDset": false + } + ] + } + ], + "status": "OK" + }, + "keydeletePending3": { + "lastKey":"", + "deletedKeyInfo": [] + }, + "deleted": { + "lastKey": "11", + "containers": [ + { + "containerId": 1, + "numberOfKeys": 2, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ] + }, + { + "containerId": 2, + "numberOfKeys": 2, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ] + }, + { + "containerId": 3, + "numberOfKeys": 2, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ] + }, + { + "containerId": 4, + "numberOfKeys": 2, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ] + }, + { + "containerId": 5, + "numberOfKeys": 2, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ] + }, + { + "containerId": 6, + "numberOfKeys": 2, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ] + }, + { + "containerId": 7, + "numberOfKeys": 2, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ] + }, + { + "containerId": 8, + "numberOfKeys": 2, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ] + }, + { + "containerId": 9, + "numberOfKeys": 2, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ] + }, + { + "containerId": 10, + "numberOfKeys": 2, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ] + } + ] + }, + "deleted1": { + "lastKey": "21", + "containers": [ + { + "containerId": 11, + "numberOfKeys": 2, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ] + }, + { + "containerId": 12, + "numberOfKeys": 2, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ] + }, + { + "containerId": 13, + "numberOfKeys": 2, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ] + }, + { + "containerId": 14, + "numberOfKeys": 2, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ] + }, + { + "containerId": 15, + "numberOfKeys": 2, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ] + }, + { + "containerId": 16, + "numberOfKeys": 2, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ] + }, + { + "containerId": 17, + "numberOfKeys": 2, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ] + }, + { + "containerId": 18, + "numberOfKeys": 2, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ] + }, + { + "containerId": 19, + "numberOfKeys": 2, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ] + }, + { + "containerId": 20, + "numberOfKeys": 2, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ] + } + ] + }, + "deleted2": { + "lastKey": "31", + "containers": [ + { + "containerId": 21, + "numberOfKeys": 2, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ] + }, + { + "containerId": 22, + "numberOfKeys": 2, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ] + }, + { + "containerId": 23, + "numberOfKeys": 2, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ] + }, + { + "containerId": 24, + "numberOfKeys": 2, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ] + }, + { + "containerId": 25, + "numberOfKeys": 2, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ] + }, + { + "containerId": 26, + "numberOfKeys": 2, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ] + }, + { + "containerId": 27, + "numberOfKeys": 2, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ] + }, + { + "containerId": 28, + "numberOfKeys": 2, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ] + }, + { + "containerId": 29, + "numberOfKeys": 2, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ] + }, + { + "containerId": 30, + "numberOfKeys": 2, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ] + } + ] + }, + "deleted3": { + "lastKey": "41", + "containers": [ + { + "containerId": 31, + "numberOfKeys": 2, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ] + }, + { + "containerId": 32, + "numberOfKeys": 2, + "pipelines": [ + { + "id": { + "id": "1202e6bb-b7c1-4a85-8067-61374b069adb" + }, + "replicationConfig": { + "replicationFactor": "ONE", + "requiredNodes": 1, + "replicationType": "RATIS" + }, + "healthy": true + } + ] + } + ] + }, + "deleted4": { + "lastKey": null, + "containers": [] + } } \ No newline at end of file diff --git a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/api/routes.json b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/api/routes.json index cc2a1b66cfea..d7efeea053c1 100644 --- a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/api/routes.json +++ b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/api/routes.json @@ -28,5 +28,44 @@ "/heatmap/readaccess?startDate=*&path=*&entityType=bucket": "/bucketHeatmap", "/heatmap/readaccess?startDate=*&path=*&entityType=key": "/keyHeatmap", "/heatmap/readaccess?startDate=*&path=*&entityType=volume": "/heatmap", - "/features/disabledFeatures": "/disabledFeatures" + "/features/disabledFeatures": "/disabledFeatures", + "/keys/open?limit=0": "/keysOpenSummary", + "/keys/deletePending?limit=1": "/keysdeletePendingSummary", + + "/containers/mismatch?limit=*&prevKey=11&missingIn=OM" : "/omMismatch1", + "/containers/mismatch?limit=*&prevKey=21&missingIn=OM" : "/omMismatch2", + "/containers/mismatch?limit=*&prevKey=31&missingIn=OM" : "/omMismatch3", + "/containers/mismatch?limit=*&prevKey=41&missingIn=OM" : "/omMismatch4", + + "/containers/mismatch?limit=*&prevKey=*&missingIn=OM" : "/omMismatch", + + "/containers/mismatch?limit=*&prevKey=11&missingIn=SCM" : "/scmMismatch1", + "/containers/mismatch?limit=*&prevKey=21&missingIn=SCM" : "/scmMismatch2", + "/containers/mismatch?limit=*&prevKey=31&missingIn=SCM" : "/scmMismatch3", + "/containers/mismatch?limit=*&prevKey=41&missingIn=SCM" : "/scmMismatch4", + "/containers/mismatch?limit=*&prevKey=51&missingIn=SCM" : "/scmMismatch5", + + "/containers/mismatch?limit=*&prevKey=*&missingIn=SCM" : "/scmMismatch", + + "/keys/open?includeFso=false&includeNonFso=true&limit=*&prevKey": "/nonFSO", + "/keys/open?includeFso=false&includeNonFso=true&limit=*&prevKey=/-9223372036854775552/-9223372036854775040/-9223372036852420095/2411/1105696238501917": "/nonFSO1", + "/keys/open?includeFso=false&includeNonFso=true&limit=*&prevKey=21": "/nonFSO2", + "/keys/open?includeFso=false&includeNonFso=true&limit=*&prevKey=31": "/nonFSO3", + + + "/keys/open?includeFso=true&includeNonFso=false&limit=*&prevKey": "/fso", + "/keys/open?includeFso=true&includeNonFso=false&limit=*&prevKey=/-9223372036854775552/-9223372036854775040/-9223372036852420095/2411/110569623850191713": "/fso1", + "/keys/open?includeFso=true&includeNonFso=false&limit=*&prevKey=/-9223372036854775552/-9223372036854775040/-9223372036852420095/2421/110569623850191713": "/fso2", + "/keys/open?includeFso=true&includeNonFso=false&limit=*&prevKey=/-9223372036854775552/-9223372036854775040/-9223372036852420095/2431/110569623850191713": "/fso3", + + "/keys/deletePending?limit=*&prevKey" : "/keydeletePending", + "/keys/deletePending?limit=*&prevKey=/volume/bucket1/rcmeevblsf/106/-9223372036843950335" : "/keydeletePending1", + "/keys/deletePending?limit=*&prevKey=/-9223372036854775552/-9223372036854775040/-9223372036852420095/2421/110569623850191" : "/keydeletePending2", + "/keys/deletePending?limit=*&prevKey=31" : "/keydeletePending3", + + "/containers/mismatch/deleted?limit=*&prevKey": "/deleted", + "/containers/mismatch/deleted?limit=*&prevKey=11": "/deleted1", + "/containers/mismatch/deleted?limit=*&prevKey=21": "/deleted2", + "/containers/mismatch/deleted?limit=*&prevKey=31": "/deleted3", + "/containers/mismatch/deleted?limit=*&prevKey=41": "/deleted4" } \ No newline at end of file diff --git a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/components/navBar/navBar.less b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/components/navBar/navBar.less index b1570b63eaec..28978baaf97e 100644 --- a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/components/navBar/navBar.less +++ b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/components/navBar/navBar.less @@ -48,6 +48,14 @@ border-right: 5px solid #1DA57A; } } + .ant-menu-sub{ + background-color: #0a2542; + color: #FFF; + &::after { + border-right: 5px solid #1DA57A; + color: #FFF; + } + } } } } diff --git a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/components/navBar/navBar.tsx b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/components/navBar/navBar.tsx index d51afb60a471..afa52df7acc2 100644 --- a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/components/navBar/navBar.tsx +++ b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/components/navBar/navBar.tsx @@ -117,11 +117,23 @@ class NavBar extends React.Component { Containers - - - Insights - - + + Insights + + }> + + + Insights + + + + + OM DB Insights + + + Disk Usage diff --git a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/constants/breadcrumbs.constants.tsx b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/constants/breadcrumbs.constants.tsx index 7f6d6fd03c81..a7633fb52148 100644 --- a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/constants/breadcrumbs.constants.tsx +++ b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/constants/breadcrumbs.constants.tsx @@ -27,5 +27,6 @@ export const breadcrumbNameMap: IBreadcrumbNameMap = { '/MissingContainers': 'Missing Containers', '/Insights': 'Insights', '/DiskUsage': 'Disk Usage', - '/Heatmap': 'Heatmap' + '/Heatmap': 'Heatmap', + '/Om':'Om', }; diff --git a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/routes.tsx b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/routes.tsx index fa53d24775b6..fe991e052a8a 100644 --- a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/routes.tsx +++ b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/routes.tsx @@ -23,6 +23,8 @@ import {NotFound} from './views/notFound/notFound'; import {IRoute} from './types/routes.types'; import {MissingContainers} from './views/missingContainers/missingContainers'; import {Insights} from './views/insights/insights'; +import {Om} from './views/insights/om/om'; + import {DiskUsage} from './views/diskUsage/diskUsage'; import {Heatmap} from './views/heatMap/heatmap'; @@ -43,6 +45,10 @@ export const routes: IRoute[] = [ path: '/Insights', component: Insights }, + { + path: '/Om', + component: Om + }, { path: '/MissingContainers', component: MissingContainers diff --git a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/views/insights/om/om.less b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/views/insights/om/om.less new file mode 100644 index 000000000000..15d68dfc8600 --- /dev/null +++ b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/views/insights/om/om.less @@ -0,0 +1,27 @@ +/* + * 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. + */ + +.ant-pagination-disabled a, .ant-pagination-disabled:hover a, .ant-pagination-disabled:focus a, .ant-pagination-disabled .ant-pagination-item-link, .ant-pagination-disabled:hover .ant-pagination-item-link, .ant-pagination-disabled:focus .ant-pagination-item-link { + color: rgba(0, 0, 0, 0.65); + cursor: pointer !important; + } + + .ant-pagination-disabled, .ant-pagination-disabled:hover, .ant-pagination-disabled:focus { + color: rgba(0, 0, 0, 0.65); + cursor: pointer !important; + } \ No newline at end of file diff --git a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/views/insights/om/om.tsx b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/views/insights/om/om.tsx new file mode 100644 index 000000000000..9b8e1297919b --- /dev/null +++ b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/views/insights/om/om.tsx @@ -0,0 +1,1042 @@ +/* + * 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. + */ + +import React from 'react'; +import axios from 'axios'; +import { Table, Tabs, Menu, Dropdown, Icon, Tooltip } from 'antd'; +import { PaginationConfig } from 'antd/lib/pagination'; +import filesize from 'filesize'; +import moment from 'moment'; +import { showDataFetchError, byteToSize } from 'utils/common'; +import './om.less'; +import { ColumnSearch } from 'utils/columnSearch'; +import { Link } from 'react-router-dom'; + + +const size = filesize.partial({ standard: 'iec' }); +const { TabPane } = Tabs; +//Previous Key Need to store respective Lastkey of each API +let mismatchPrevKeyList = [0]; +let openPrevKeyList =[""]; +let keysPendingPrevList =[""]; +let deletedKeysPrevList =[0]; +let keysPendingExpanded: any = []; +interface IContainerResponse { + containerId: number; + mismatchMissingState: string; + OMContainerState: string; + SCMContainerState: string; + existsAt: string; + pipelines: string[]; + numberOfKeys: number; +} + +interface IKeyLevelResponse { + path: string; + keyState: string; + inStateSince: number; + size: number; + replicatedSize: number; + unreplicatedSize: number; + replicationType: string; +} + +interface IDeleteKeyResponse { + objectID: number; + updateID: number; + parentObjectID: number; + volumeName: string; + bucketName: string; + keyName: string; + dataSize: number; + path: string; + replicatedTotal: number; + unreplicatedTotal: number; + omKeyInfoList: IDeleteKeyResponse[]; +} + +interface IContainersResponse { + containers: IContainerResponse[]; +} + +interface IKeysResponse { + entities: IKeyLevelResponse[]; +} +interface IDeleteKeysResponse { + deletedkeyinfo: IDeleteKeyResponse[]; +} + +interface IKeyResponse { + Volume: string; + Bucket: string; + Key: string; + DataSize: number; + Versions: number[]; + Blocks: object; + CreationTime: string; + ModificationTime: string; +} + +interface IContainerKeysResponse { + totalCount: number; + keys: IKeyResponse[]; +} + +const KEY_TABLE_COLUMNS = [ + { + title: 'Volume', + dataIndex: 'Volume', + key: 'Volume' + }, + { + title: 'Bucket', + dataIndex: 'Bucket', + key: 'Bucket' + }, + { + title: 'Key', + dataIndex: 'Key', + key: 'Key' + }, + { + title: 'Size', + dataIndex: 'DataSize', + key: 'DataSize', + render: (dataSize: number) =>
{size(dataSize)}
+ }, + { + title: 'Date Created', + dataIndex: 'CreationTime', + key: 'CreationTime', + render: (date: string) => moment(date).format('lll') + }, + { + title: 'Date Modified', + dataIndex: 'ModificationTime', + key: 'ModificationTime', + render: (date: string) => moment(date).format('lll') + } +]; + +const MISMATCH_TAB_COLUMNS = [ + { + title: 'Container ID', + dataIndex: 'containerId', + key: 'containerId', + width: '20%', + isSearchable: true, + + }, + { + title: 'Count Of Keys', + dataIndex: 'numberOfKeys', + key: 'numberOfKeys', + sorter: (a: IContainerResponse, b: IContainerResponse) => a.numberOfKeys - b.numberOfKeys + }, + { + title: 'Pipelines', + dataIndex: 'pipelines', + key: 'pipelines', + render: (pipelines: any) => ( +
+ {pipelines && pipelines.map(pipeline => ( +
+ {pipeline.id.id} +
+ ))} +
+ ) + } +]; + +const OPEN_KEY_TAB_COLUMNS = [ + { + title: 'Key', + dataIndex: 'path', + key: 'path', + isSearchable: true + }, + { + title: 'Amount of data', + dataIndex: 'size', + key: 'size', + render: (size :any) => size = byteToSize(size,1) + }, + { + title: 'Path', + dataIndex: 'key', + key: 'key', + width: '270px' + }, + { + title: 'In state since', + dataIndex: 'inStateSince', + key: 'inStateSince', + render: (inStateSince: number) => { + return inStateSince > 0 ? moment(inStateSince).format('ll LTS') : 'NA'; + } + }, + { + title: 'Replication Factor', + dataIndex: 'replicationInfo', + key: 'replicationfactor', + render: (replicationInfo: any) => ( +
+ { +
+ {Object.values(replicationInfo)[0]} +
+ } +
+ ) + }, + { + title: 'Replication Type', + dataIndex: 'replicationInfo', + key: 'replicationtype', + render: (replicationInfo: any) => ( +
+ { +
+ {Object.values(replicationInfo)[2]} +
+ } +
+ ) + } + +]; + +const PENDING_TAB_COLUMNS = [ + { + title: 'Key Name', + dataIndex: 'fileName', + key: 'fileName' + }, + { + title: 'Path', + dataIndex: 'keyName', + key: 'keyName', + isSearchable: true, + }, + { + title: 'Total Data Size', + dataIndex: 'dataSize', + key: 'dataSize', + render: (dataSize :any) => dataSize = byteToSize(dataSize,1) + }, + { + title: 'Total Key Count', + dataIndex: 'keyCount', + key: 'keyCount', + } +]; + +const DELETED_TAB_COLUMNS = [ + { + title: 'Container ID', + dataIndex: 'containerId', + key: 'containerId', + width: '20%', + isSearchable: true + }, + { + title: 'Count Of Keys', + dataIndex: 'numberOfKeys', + key: 'numberOfKeys', + sorter: (a: IContainerResponse, b: IContainerResponse) => a.numberOfKeys - b.numberOfKeys + }, + { + title: 'Pipelines', + dataIndex: 'pipelines', + key: 'pipelines', + render: (pipelines: any) => ( +
+ {pipelines && pipelines.map((pipeline:any) => ( +
+ {pipeline.id.id} +
+ ))} +
+ ) + } +]; + +interface IExpandedRow { + [key: number]: IExpandedRowState; +} + +interface IExpandedRowState { + containerId: number; + loading: boolean; + dataSource: IKeyResponse[]; + totalCount: number; +} + +interface IOmdbInsightsState { + loading: boolean; + mismatchDataSource: IContainerResponse[]; + openKeysDataSource: IKeyLevelResponse[]; + pendingDeleteKeyDataSource: any[]; + expandedRowData: IExpandedRow; + deletedContainerKeysDataSource: []; + prevKeyMismatch: number; + mismatchMissingState: any; + prevKeyOpen: string; + prevKeyDeleted: number; + prevKeyDeletePending: string; + activeTab: string; + DEFAULT_LIMIT: number, + clickable: boolean; + includeFso: boolean; + includeNonFso: boolean; + prevClickable :boolean +} + +export class Om extends React.Component, IOmdbInsightsState> { + + constructor(props = {}) { + super(props); + this.addexistAtColumn(); + this.addfsoNonfsoKeyColumn(); + this.state = { + loading: false, + mismatchDataSource: [], + openKeysDataSource: [], + pendingDeleteKeyDataSource: [], + deletedContainerKeysDataSource: [], + prevKeyMismatch: 0, + mismatchMissingState: 'SCM', + prevKeyOpen: "", + prevKeyDeletePending: "", + prevKeyDeleted: 0, + expandedRowData: {}, + activeTab: '1', + DEFAULT_LIMIT: 10, + clickable: true, + includeFso: true, + includeNonFso: false, + prevClickable:false + }; + } + + addexistAtColumn = () => { + // Inside the class component to access the React internal state + const existsAtColumn = { + title: + + +    + }> + + + + , + dataIndex: 'existsAt', + key: 'existsAt', + isVisible: true, + render: (existsAt: any) => { + return ( +
+ {existsAt} +
+ + ); + } + } + if (MISMATCH_TAB_COLUMNS.length > 0 && MISMATCH_TAB_COLUMNS[MISMATCH_TAB_COLUMNS.length - 1].key !== 'existsAt') { + MISMATCH_TAB_COLUMNS.push(existsAtColumn); + } + }; + + existAtScmOmMenu = () => ( + this.handleExistsAtChange(e)}> + + OM + + + SCM + + + ); + + handleExistsAtChange = (e: any) => { + console.log("handleExistsAtChange", e.key); + if (e.key === 'OM') { + mismatchPrevKeyList = [0]; + this.fetchMismatchContainers(this.state.DEFAULT_LIMIT, 0, 'SCM'); + } + else { + mismatchPrevKeyList = [0]; + this.fetchMismatchContainers(this.state.DEFAULT_LIMIT, 0, 'OM'); + } + }; + + addfsoNonfsoKeyColumn = () => { + // Inside the class component to access the React internal state + const fsoNonfsoColumn = { + title: + + + , + dataIndex: 'type', + key: 'type', + isVisible: true, + + render: (type: any) => { + return ( +
+ {type} +
+ ); + } + } + if (OPEN_KEY_TAB_COLUMNS.length > 0 && OPEN_KEY_TAB_COLUMNS[OPEN_KEY_TAB_COLUMNS.length - 1].key !== 'type') { + OPEN_KEY_TAB_COLUMNS.push(fsoNonfsoColumn); + } + }; + + fsoNonfsoMenu = () => ( + this.handlefsoNonfsoMenuChange(e)}> + + FSO + + + Non FSO + + + ); + + handlefsoNonfsoMenuChange = (e: any) => { + console.log("handlefsoNonfsoMenuChange", e.key); + if (e.key === 'fso') { + openPrevKeyList =[""]; + this.fetchOpenKeys(true, false, this.state.DEFAULT_LIMIT, ""); + } + else { + openPrevKeyList = [""]; + this.fetchOpenKeys(false, true, this.state.DEFAULT_LIMIT, ""); + } + }; + + componentDidMount(): void { + // Fetch mismatch containers on component mount + this.fetchMismatchContainers(this.state.DEFAULT_LIMIT, this.state.prevKeyMismatch, this.state.mismatchMissingState); + }; + + fetchMismatchContainers = (limit: number, prevKeyMismatch: number, mismatchMissingState: any) => { + this.setState({ + loading: true, + clickable: true, + prevClickable: true + }); + const mismatchEndpoint = `/api/v1/containers/mismatch?limit=${limit}&prevKey=${prevKeyMismatch}&missingIn=${mismatchMissingState}` + axios.get(mismatchEndpoint).then(mismatchContainersResponse => { + const mismatchContainers: IContainerResponse[] = mismatchContainersResponse && mismatchContainersResponse.data && mismatchContainersResponse.data.containerDiscrepancyInfo; + if (mismatchContainersResponse && mismatchContainersResponse.data && mismatchContainersResponse.data.lastKey === null) { + //No Further Records may be last record + mismatchPrevKeyList = [0]; + this.setState({ + loading: false, + clickable: false, + mismatchDataSource: mismatchContainers, + expandedRowData: {}, + }) + } + else { + if (this.state.prevKeyMismatch === 0 ){ + this.setState({ + prevClickable: false + }) + } + if (mismatchPrevKeyList.includes(mismatchContainersResponse.data.lastKey) === false) { + mismatchPrevKeyList.push(mismatchContainersResponse.data.lastKey); + } + this.setState({ + loading: false, + prevKeyMismatch: mismatchContainersResponse && mismatchContainersResponse.data && mismatchContainersResponse.data.lastKey, + mismatchDataSource: mismatchContainers, + }); + } + }).catch(error => { + this.setState({ + loading: false, + }); + showDataFetchError(error.toString()); + }); + }; + + fetchOpenKeys = (includeFso: boolean, includeNonFso: boolean, limit: number, prevKeyOpen: string) => { + this.setState({ + loading: true, + clickable: true, + prevClickable:true + }); + + let openKeysEndpoint; + if (prevKeyOpen === "") { + openKeysEndpoint = `/api/v1/keys/open?includeFso=${includeFso}&includeNonFso=${includeNonFso}&limit=${limit}&prevKey`; + } + else { + openKeysEndpoint = `/api/v1/keys/open?includeFso=${includeFso}&includeNonFso=${includeNonFso}&limit=${limit}&prevKey=${prevKeyOpen}`; + } + + axios.get(openKeysEndpoint).then(openKeysResponse => { + const openKeys = openKeysResponse && openKeysResponse.data; + let allopenKeysResponse: any[] = []; + for (let key in openKeys) { + if (Array.isArray(openKeys[key])) { + openKeys[key] && openKeys[key].map((item: any) => (allopenKeysResponse.push({ ...item, type: key }))); + } + } + + if (openKeysResponse && openKeysResponse.data && openKeysResponse.data.lastKey === "") { + //last key of api is null may be last record no further records + openPrevKeyList = [""]; + this.setState({ + loading: false, + clickable: false, + openKeysDataSource: allopenKeysResponse + }) + } + else { + if (this.state.prevKeyOpen === "" ){ + this.setState({ + prevClickable: false + }) + } + if (openPrevKeyList.includes(openKeysResponse.data.lastKey) === false) { + openPrevKeyList.push(openKeysResponse.data.lastKey); + } + this.setState({ + loading: false, + prevKeyOpen: openKeysResponse && openKeysResponse.data && openKeysResponse.data.lastKey, + openKeysDataSource: allopenKeysResponse, + }) + }; + }).catch(error => { + this.setState({ + loading: false + }); + showDataFetchError(error.toString()); + }); + + }; + + fetchDeletePendingKeys = (limit: number, prevKeyDeletePending: string) => { + this.setState({ + loading: true, + clickable: true, + prevClickable :true + }); + keysPendingExpanded =[]; + let deletePendingKeysEndpoint; + if (prevKeyDeletePending === "" || prevKeyDeletePending === undefined ) { + deletePendingKeysEndpoint = `/api/v1/keys/deletePending?limit=${limit}&prevKey`; + } + else { + deletePendingKeysEndpoint = `/api/v1/keys/deletePending?limit=${limit}&prevKey=${prevKeyDeletePending}`; + } + axios.get(deletePendingKeysEndpoint).then(deletePendingKeysResponse => { + const deletePendingKeys = deletePendingKeysResponse && deletePendingKeysResponse.data && deletePendingKeysResponse.data.deletedKeyInfo; + //Use Summation Logic iterate through all object and find sum of all datasize + let deletedKeyInfoData = []; + deletedKeyInfoData = deletePendingKeys && deletePendingKeys.flatMap((infoObject:any) => { + const { omKeyInfoList } = infoObject; + keysPendingExpanded.push(infoObject); + let count = 0; + let item = omKeyInfoList && omKeyInfoList.reduce((obj:any, item:any) => { + const { dataSize } = item; + const newDataSize = obj.dataSize + dataSize; + count = count + 1; + return { ...item, dataSize: newDataSize }; + }, { "dataSize": 0 }); + + return { + "dataSize": item.dataSize, + "fileName":item.fileName, + "keyName": item.keyName, + "path": item.path, + "keyCount": count + } + }); + + if (deletePendingKeysResponse && deletePendingKeysResponse.data && deletePendingKeysResponse.data.lastKey === "") { + //last key of api is empty may be last record no further records + keysPendingPrevList =[""]; + this.setState({ + loading: false, + clickable: false, + pendingDeleteKeyDataSource: deletedKeyInfoData + }) + } + else { + if (this.state.prevKeyDeletePending === "" ||this.state.prevKeyDeletePending === undefined ){ + this.setState({ + prevClickable: false + }) + } + if (keysPendingPrevList.includes(deletePendingKeysResponse.data.lastKey) === false) { + keysPendingPrevList.push(deletePendingKeysResponse.data.lastKey); + } + this.setState({ + loading: false, + prevKeyDeletePending: deletePendingKeysResponse && deletePendingKeysResponse.data && deletePendingKeysResponse.data.lastKey, + pendingDeleteKeyDataSource: deletedKeyInfoData + }); + } + }).catch(error => { + this.setState({ + loading: false, + }); + showDataFetchError(error.toString()); + }); + }; + + expandedKey = ( record:any)=> { + const filteredData = keysPendingExpanded && keysPendingExpanded.flatMap((info:any) => + info.omKeyInfoList && info.omKeyInfoList.filter((item: any) => item.keyName === record.keyName) + ) + const columns= [{ + title: 'Data Size', + dataIndex: 'dataSize', + key: 'dataSize', + render: (dataSize :any) => dataSize = dataSize > 0 ? byteToSize(dataSize,1) : dataSize + }, + { + title: 'Replicated Data Size', + dataIndex: 'replicatedSize', + key: 'replicatedSize', + render: (replicatedSize :any) => replicatedSize = replicatedSize > 0 ? byteToSize(replicatedSize,1) : replicatedSize + }, + { + title: 'Creation Time', + dataIndex: 'creationTime', + key: 'creationTime', + render: (creationTime: number) => { + return creationTime > 0 ? moment(creationTime).format('ll LTS') : 'NA'; + } + }, + { + title: 'Modification Time', + dataIndex: 'modificationTime', + key: 'modificationTime', + render: (modificationTime: number) => { + return modificationTime > 0 ? moment(modificationTime).format('ll LTS') : 'NA'; + } + } + ] + return ( + + ); + } + + fetchDeletedKeys = (limit: number, prevKeyDeleted: number) => { + this.setState({ + loading: true, + clickable: true, + prevClickable: true + }); + const deletedKeysEndpoint = `/api/v1/containers/mismatch/deleted?limit=${limit}&prevKey=${prevKeyDeleted}`; + axios.get(deletedKeysEndpoint).then(deletedKeysResponse => { + let deletedContainerKeys = []; + deletedContainerKeys = deletedKeysResponse && deletedKeysResponse.data && deletedKeysResponse.data.containers; + if (deletedKeysResponse && deletedKeysResponse.data && deletedKeysResponse.data.lastKey === null) { + // no more further records last key + deletedKeysPrevList = [0]; + this.setState({ + loading: false, + clickable: false, + deletedContainerKeysDataSource: deletedContainerKeys, + expandedRowData: {}, + }) + } + else { + if (this.state.prevKeyDeleted === 0 ){ + this.setState({ + prevClickable: false + }) + } + if (deletedKeysPrevList.includes(deletedKeysResponse.data.lastKey) === false) { + deletedKeysPrevList.push(deletedKeysResponse.data.lastKey); + } + this.setState({ + loading: false, + prevKeyDeleted: deletedKeysResponse && deletedKeysResponse.data && deletedKeysResponse.data.lastKey, + deletedContainerKeysDataSource: deletedContainerKeys + }) + }; + }).catch(error => { + this.setState({ + loading: false + }); + showDataFetchError(error.toString()); + }); + }; + + changeTab = (activeKey: any) => { + //when changing tab make empty all datasets and prevkey and deafult filtering to intial values + mismatchPrevKeyList = [0]; + openPrevKeyList =[""]; + keysPendingPrevList =[""]; + deletedKeysPrevList =[0]; + this.setState({ + activeTab: activeKey, + mismatchDataSource: [], + openKeysDataSource: [], + pendingDeleteKeyDataSource: [], + deletedContainerKeysDataSource: [], + expandedRowData: {}, + prevKeyOpen: "", + prevKeyDeletePending: "", + prevKeyDeleted: 0, + prevKeyMismatch: 0, + mismatchMissingState: 'SCM', + includeFso: true, + includeNonFso: false, + DEFAULT_LIMIT: 10, + + }, () => { + if (activeKey === '2') { + this.fetchOpenKeys(this.state.includeFso, this.state.includeNonFso, this.state.DEFAULT_LIMIT, this.state.prevKeyOpen); + } else if (activeKey === '3') { + keysPendingExpanded =[]; + this.fetchDeletePendingKeys(this.state.DEFAULT_LIMIT, this.state.prevKeyDeletePending); + } else if (activeKey === '4') { + this.fetchDeletedKeys(this.state.DEFAULT_LIMIT, this.state.prevKeyDeleted); + } + else { + this.fetchMismatchContainers(this.state.DEFAULT_LIMIT, this.state.prevKeyMismatch, this.state.mismatchMissingState); + } + }) + }; + + fetchPreviousRecords = () => { + // to fetch previous call stored all prevkey in array and fetching in respective tabs + if (this.state.activeTab === '2') { + this.setState({ + prevKeyOpen: openPrevKeyList[openPrevKeyList.indexOf(this.state.prevKeyOpen)-2] + }, () => { + this.fetchOpenKeys(this.state.includeFso, this.state.includeNonFso, this.state.DEFAULT_LIMIT,this.state.prevKeyOpen); + }) + } else if (this.state.activeTab === '3') { + this.setState({ + prevKeyDeletePending: keysPendingPrevList[keysPendingPrevList.indexOf(this.state.prevKeyDeletePending)-2] + }, () => { + this.fetchDeletePendingKeys(this.state.DEFAULT_LIMIT, this.state.prevKeyDeletePending); + }) + } else if (this.state.activeTab === '4') { + this.setState({ + prevKeyDeleted: deletedKeysPrevList[deletedKeysPrevList.indexOf(this.state.prevKeyDeleted)-2] + }, () => { + this.fetchDeletedKeys(this.state.DEFAULT_LIMIT,this.state.prevKeyDeleted); + }) + } + else { + this.setState({ + prevKeyMismatch: mismatchPrevKeyList[mismatchPrevKeyList.indexOf(this.state.prevKeyMismatch)-2] + }, () => { + this.fetchMismatchContainers(this.state.DEFAULT_LIMIT,this.state.prevKeyMismatch, this.state.mismatchMissingState); + }) + } + }; + + fetchNextRecords = () => { + // To Call API for Page Level for each page fetch next records + if (this.state.activeTab === '2') { + this.fetchOpenKeys(this.state.includeFso, this.state.includeNonFso, this.state.DEFAULT_LIMIT, this.state.prevKeyOpen); + } else if (this.state.activeTab === '3') { + this.fetchDeletePendingKeys(this.state.DEFAULT_LIMIT, this.state.prevKeyDeletePending); + } else if (this.state.activeTab === '4') { + this.fetchDeletedKeys(this.state.DEFAULT_LIMIT, this.state.prevKeyDeleted); + } + else { + this.fetchMismatchContainers(this.state.DEFAULT_LIMIT, this.state.prevKeyMismatch, this.state.mismatchMissingState); + } + }; + + itemRender = (_: any, type: string, originalElement: any) => { + if (type === 'prev') { + return
{this.state.prevClickable ? Prev: No Records}
; + } + if (type === 'next') { + return
{this.state.clickable ? {'>>'} : No More Further Records}
; + } + return originalElement; + }; + + onShowSizeChange = (current: number, pageSize: number) => { + console.log("onShowSizeChange",pageSize, this.state); + console.log("Open Keys Array", keysPendingPrevList); + if (this.state.activeTab === '2') { + //open keys + this.setState({ + DEFAULT_LIMIT: pageSize, + prevKeyOpen: openPrevKeyList[openPrevKeyList.indexOf(this.state.prevKeyOpen)-1] + }, () => { + this.fetchOpenKeys(this.state.includeFso, this.state.includeNonFso, this.state.DEFAULT_LIMIT,this.state.prevKeyOpen); + }); + } + else if (this.state.activeTab === '3') { + //keys pending for deletion + this.setState({ + DEFAULT_LIMIT: pageSize, + prevKeyDeletePending: keysPendingPrevList[keysPendingPrevList.indexOf(this.state.prevKeyDeletePending)-1] + }, () => { + this.fetchDeletePendingKeys(this.state.DEFAULT_LIMIT, this.state.prevKeyDeletePending); + }) + } + else if (this.state.activeTab === '4') { + //deleted container keys + this.setState({ + DEFAULT_LIMIT: pageSize, + prevKeyDeleted: deletedKeysPrevList[deletedKeysPrevList.indexOf(this.state.prevKeyDeleted)-1] + }, () => { + this.fetchDeletedKeys(this.state.DEFAULT_LIMIT, this.state.prevKeyDeleted); + }) + } + else { + // active tab 1 for mismatch + this.setState({ + DEFAULT_LIMIT: pageSize, + prevKeyMismatch: mismatchPrevKeyList[mismatchPrevKeyList.indexOf(this.state.prevKeyMismatch)-1] + }, () => { + this.fetchMismatchContainers(this.state.DEFAULT_LIMIT,this.state.prevKeyMismatch, this.state.mismatchMissingState); + }); + } + }; + + onRowExpandClick = (expanded: boolean, record: IContainerResponse) => { + if (expanded) { + this.setState(({ expandedRowData }) => { + const expandedRowState: IExpandedRowState = expandedRowData[record.containerId] ? + Object.assign({}, expandedRowData[record.containerId], { loading: true }) : + { containerId: record.containerId, loading: true, dataSource: [], totalCount: 0 }; + return { + expandedRowData: Object.assign({}, expandedRowData, { [record.containerId]: expandedRowState }) + }; + }); + axios.get(`/api/v1/containers/${record.containerId}/keys`).then(response => { + const containerKeysResponse: IContainerKeysResponse = response.data; + this.setState(({ expandedRowData }) => { + const expandedRowState: IExpandedRowState = + Object.assign({}, expandedRowData[record.containerId], + { loading: false, dataSource: containerKeysResponse.keys, totalCount: containerKeysResponse.totalCount }); + return { + expandedRowData: Object.assign({}, expandedRowData, { [record.containerId]: expandedRowState }) + }; + }); + }).catch(error => { + this.setState(({ expandedRowData }) => { + const expandedRowState: IExpandedRowState = + Object.assign({}, expandedRowData[record.containerId], + { loading: false }); + return { + expandedRowData: Object.assign({}, expandedRowData, { [record.containerId]: expandedRowState }) + }; + }); + showDataFetchError(error.toString()); + }); + } + }; + + expandedRowRender = (record: IContainerResponse) => { + const { expandedRowData } = this.state; + const containerId = record.containerId; + if (expandedRowData[containerId]) { + const containerKeys: IExpandedRowState = expandedRowData[containerId]; + const dataSource = containerKeys && containerKeys.dataSource && containerKeys.dataSource.map(record => ( + { ...record, uid: `${record.Volume}/${record.Bucket}/${record.Key}` } + )); + const paginationConfig: PaginationConfig = { + showTotal: (total: number, range) => `${range[0]}-${range[1]} of ${total} keys` + }; + return ( +
+ ); + } + return
Loading...
; + }; + + searchMismatchColumn = () => { + return MISMATCH_TAB_COLUMNS.reduce((filtered, column) => { + if (column.isSearchable) { + const newColumn = { + ...column, + ...new ColumnSearch(column).getColumnSearchProps(column.dataIndex) + }; + filtered.push(newColumn); + } else { + filtered.push(column); + } + return filtered; + }, []) + }; + + searchOpenKeyColumn = () => { + return OPEN_KEY_TAB_COLUMNS.reduce((filtered, column) => { + if (column.isSearchable) { + const newColumn = { + ...column, + ...new ColumnSearch(column).getColumnSearchProps(column.dataIndex) + }; + filtered.push(newColumn); + } else { + filtered.push(column); + } + + return filtered; + }, []) + }; + + searchKeysPendingColumn = () => { + return PENDING_TAB_COLUMNS.reduce((filtered, column) => { + if (column.isSearchable) { + const newColumn = { + ...column, + ...new ColumnSearch(column).getColumnSearchProps(column.dataIndex) + }; + filtered.push(newColumn); + } else { + filtered.push(column); + } + + return filtered; + }, []) + }; + + searchDeletedKeyColumn = () => { + return DELETED_TAB_COLUMNS.reduce((filtered, column) => { + if (column.isSearchable) { + const newColumn = { + ...column, + ...new ColumnSearch(column).getColumnSearchProps(column.dataIndex) + }; + filtered.push(newColumn); + } else { + filtered.push(column); + } + + return filtered; + }, []) + }; + + render() { + const { mismatchDataSource, loading, openKeysDataSource, pendingDeleteKeyDataSource, deletedContainerKeysDataSource } = this.state; + + const paginationConfig: PaginationConfig = { + pageSize:this.state.DEFAULT_LIMIT, + defaultPageSize: this.state.DEFAULT_LIMIT, + pageSizeOptions: ['10', '20', '30', '50'], + showSizeChanger: true, + onShowSizeChange: this.onShowSizeChange, + itemRender: this.itemRender + }; + + const generateMismatchTable = (dataSource: any) => { + return
+ } + + const generateOpenKeyTable = (dataSource: any) => { + return
+ } + + const generateKeysPendingTable = (dataSource: any) => { + return
+ } + + const generateDeletedKeysTable = (dataSource: any) => { + return
+ } + + + + return ( +
+
+ OM DB Insights +
+
+ + + {generateMismatchTable(mismatchDataSource)} + + + {generateOpenKeyTable(openKeysDataSource)} + + Keys Pending for Deletion   + + + + + }> + {generateKeysPendingTable(pendingDeleteKeyDataSource)} + + Deleted Container Keys   + + + + + }> + {generateDeletedKeysTable(deletedContainerKeysDataSource)} + + +
+
+ ); + } +} \ No newline at end of file diff --git a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/views/overview/overview.less b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/views/overview/overview.less index 343370789476..e683a7d5d042 100644 --- a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/views/overview/overview.less +++ b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/views/overview/overview.less @@ -28,3 +28,9 @@ padding-left: 5px; } } + +.summary-font{ + .overview-card .ant-card-meta-detail .ant-card-meta-title { + font-size: 17px !important; + } + } diff --git a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/views/overview/overview.tsx b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/views/overview/overview.tsx index 8b3e7abaaab3..09720fbc223e 100644 --- a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/views/overview/overview.tsx +++ b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/views/overview/overview.tsx @@ -23,7 +23,7 @@ import axios from 'axios'; import {IStorageReport} from 'types/datanode.types'; import moment from 'moment'; import AutoReloadPanel from 'components/autoReloadPanel/autoReloadPanel'; -import {showDataFetchError} from 'utils/common'; +import {showDataFetchError,byteToSize} from 'utils/common'; import {AutoReloadHelper} from 'utils/autoReloadHelper'; import filesize from 'filesize'; import './overview.less'; @@ -62,6 +62,12 @@ interface IOverviewState { openContainers: number; deletedContainers: number; keysPendingDeletion: number; + openSummarytotalUnrepSize: number, + openSummarytotalRepSize: number, + openSummarytotalOpenKeys: number, + deletePendingSummarytotalUnrepSize: number, + deletePendingSummarytotalRepSize: number, + deletePendingSummarytotalDeletedKeys: number, } export class Overview extends React.Component, IOverviewState> { @@ -90,7 +96,13 @@ export class Overview extends React.Component, IOverviewS omStatus: '', openContainers: 0, deletedContainers: 0, - keysPendingDeletion: 0 + keysPendingDeletion: 0, + openSummarytotalUnrepSize: 0, + openSummarytotalRepSize: 0, + openSummarytotalOpenKeys: 0, + deletePendingSummarytotalUnrepSize: 0, + deletePendingSummarytotalRepSize: 0, + deletePendingSummarytotalDeletedKeys: 0 }; this.autoReload = new AutoReloadHelper(this._loadData); } @@ -101,8 +113,10 @@ export class Overview extends React.Component, IOverviewS }); axios.all([ axios.get('/api/v1/clusterState'), - axios.get('/api/v1/task/status') - ]).then(axios.spread((clusterStateResponse, taskstatusResponse) => { + axios.get('/api/v1/task/status'), + axios.get('/api/v1/keys/open?limit=0'), + axios.get('/api/v1/keys/deletePending?limit=1'), + ]).then(axios.spread((clusterStateResponse, taskstatusResponse, openResponse, deletePendingResponse) => { const clusterState: IClusterStateResponse = clusterStateResponse.data; const taskStatus = taskstatusResponse.data; @@ -125,7 +139,13 @@ export class Overview extends React.Component, IOverviewS deletedContainers: clusterState.deletedContainers, lastRefreshed: Number(moment()), lastUpdatedOMDBDelta: omDBDeltaObject && omDBDeltaObject.lastUpdatedTimestamp, - lastUpdatedOMDBFull: omDBFullObject && omDBFullObject.lastUpdatedTimestamp + lastUpdatedOMDBFull: omDBFullObject && omDBFullObject.lastUpdatedTimestamp, + openSummarytotalUnrepSize: openResponse.data && openResponse.data.keysSummary && openResponse.data.keysSummary.totalUnreplicatedDataSize, + openSummarytotalRepSize: openResponse.data && openResponse.data.keysSummary && openResponse.data.keysSummary.totalReplicatedDataSize, + openSummarytotalOpenKeys: openResponse.data && openResponse.data.keysSummary && openResponse.data.keysSummary.totalOpenKeys, + deletePendingSummarytotalUnrepSize: deletePendingResponse.data && deletePendingResponse.data.keysSummary && deletePendingResponse.data.keysSummary.totalUnreplicatedDataSize, + deletePendingSummarytotalRepSize: deletePendingResponse.data && deletePendingResponse.data.keysSummary && deletePendingResponse.data.keysSummary.totalReplicatedDataSize, + deletePendingSummarytotalDeletedKeys: deletePendingResponse.data && deletePendingResponse.data.keysSummary && deletePendingResponse.data.keysSummary.totalDeletedKeys }); })).catch(error => { this.setState({ @@ -165,14 +185,29 @@ export class Overview extends React.Component, IOverviewS } render() { - const {loading, datanodes, pipelines, storageReport, containers, volumes, buckets, - keys, missingContainersCount, lastRefreshed, lastUpdatedOMDBDelta, lastUpdatedOMDBFull, omStatus, openContainers, deletedContainers, keysPendingDeletion} = this.state; + const {loading, datanodes, pipelines, storageReport, containers, volumes, buckets, openSummarytotalUnrepSize, openSummarytotalRepSize, openSummarytotalOpenKeys, + deletePendingSummarytotalUnrepSize,deletePendingSummarytotalRepSize,deletePendingSummarytotalDeletedKeys,keysPendingDeletion, + keys, missingContainersCount, lastRefreshed, lastUpdatedOMDBDelta, lastUpdatedOMDBFull, omStatus, openContainers, deletedContainers } = this.state; const datanodesElement = ( {datanodes} HEALTHY ); + const openSummaryData = ( +
+ {openSummarytotalRepSize!== undefined ? byteToSize(openSummarytotalRepSize, 1): '0'} Total Replicated Data Size
+ {openSummarytotalUnrepSize!== undefined ? byteToSize(openSummarytotalUnrepSize, 1): '0'} Total UnReplicated Data Size
+ {openSummarytotalOpenKeys !== undefined ? openSummarytotalOpenKeys: '0'} Total Open Keys +
+ ); + const deletePendingSummaryData = ( +
+ {deletePendingSummarytotalRepSize!== undefined ? byteToSize(deletePendingSummarytotalRepSize, 1): '0'} Total Replicated Data Size
+ {deletePendingSummarytotalUnrepSize!== undefined ? byteToSize(deletePendingSummarytotalUnrepSize,1): '0'} Total UnReplicated Data Size
+ {deletePendingSummarytotalDeletedKeys !== undefined ? deletePendingSummarytotalDeletedKeys: '0'} Total Pending Delete Keys +
+ ); const containersTooltip = missingContainersCount === 1 ? 'container is missing' : 'containers are missing'; const containersLink = missingContainersCount > 0 ? '/MissingContainers' : '/Containers'; const duLink = '/DiskUsage'; @@ -241,6 +276,12 @@ export class Overview extends React.Component, IOverviewS
+ + + + + + );