2018-08-17 08:34:59 +08:00
/*
* Schemas . cpp
*
* This source file is part of the FoundationDB open source project
*
* Copyright 2013 - 2018 Apple Inc . and the FoundationDB project authors
*
* Licensed 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 .
*/
2018-10-20 01:30:13 +08:00
# include "fdbclient/Schemas.h"
2018-08-17 08:34:59 +08:00
2018-09-05 13:16:35 +08:00
const KeyRef JSONSchemas : : statusSchema = LiteralStringRef ( R " statusSchema(
2018-08-17 08:34:59 +08:00
{
" cluster " : {
" layers " : {
" _valid " : true ,
" _error " : " some error description "
} ,
" processes " : {
" $map " : {
" version " : " 3.0.0 " ,
" machine_id " : " 0ccb4e0feddb5583010f6b77d9d10ece " ,
" locality " : {
" $map " : " value "
} ,
" class_source " : {
" $enum " : [
" command_line " ,
" configure_auto " ,
" set_class "
]
} ,
" class_type " : {
" $enum " : [
" unset " ,
" storage " ,
" transaction " ,
" resolution " ,
" proxy " ,
" master " ,
" test "
]
} ,
2019-03-11 13:58:15 +08:00
" degraded " : true ,
2018-08-17 08:34:59 +08:00
" roles " : [
{
" query_queue_max " : 0 ,
" input_bytes " : {
" hz " : 0.0 ,
" counter " : 0 ,
" roughness " : 0.0
} ,
" stored_bytes " : 12341234 ,
" kvstore_used_bytes " : 12341234 ,
" kvstore_available_bytes " : 12341234 ,
" kvstore_free_bytes " : 12341234 ,
" kvstore_total_bytes " : 12341234 ,
" durable_bytes " : {
" hz " : 0.0 ,
" counter " : 0 ,
" roughness " : 0.0
} ,
" queue_disk_used_bytes " : 12341234 ,
" queue_disk_available_bytes " : 12341234 ,
" queue_disk_free_bytes " : 12341234 ,
" queue_disk_total_bytes " : 12341234 ,
" role " : {
" $enum " : [
" master " ,
" proxy " ,
" log " ,
" storage " ,
" resolver " ,
2019-03-28 00:54:01 +08:00
" cluster_controller " ,
" data_distributor " ,
2019-05-03 07:16:25 +08:00
" ratekeeper " ,
" router "
2018-08-17 08:34:59 +08:00
]
} ,
" data_version " : 12341234 ,
2018-09-28 05:33:21 +08:00
" durable_version " : 12341234 ,
2018-08-17 08:34:59 +08:00
" data_lag " : {
" seconds " : 5.0 ,
" versions " : 12341234
} ,
2018-10-02 00:58:49 +08:00
" durability_lag " : {
2018-09-28 05:33:21 +08:00
" seconds " : 5.0 ,
" versions " : 12341234
} ,
2018-08-17 08:34:59 +08:00
" id " : " eb84471d68c12d1d26f692a50000003f " ,
2018-09-28 06:32:39 +08:00
" total_queries " : {
" hz " : 0.0 ,
" counter " : 0 ,
" roughness " : 0.0
} ,
2018-08-17 08:34:59 +08:00
" finished_queries " : {
" hz " : 0.0 ,
" counter " : 0 ,
" roughness " : 0.0
2018-09-28 05:33:21 +08:00
} ,
" bytes_queried " : {
" hz " : 0.0 ,
" counter " : 0 ,
" roughness " : 0.0
} ,
" keys_queried " : {
" hz " : 0.0 ,
" counter " : 0 ,
" roughness " : 0.0
} ,
" mutation_bytes " : {
" hz " : 0.0 ,
" counter " : 0 ,
" roughness " : 0.0
} ,
" mutations " : {
" hz " : 0.0 ,
" counter " : 0 ,
" roughness " : 0.0
2019-01-19 08:18:34 +08:00
} ,
" grv_latency_bands " : {
2019-02-08 05:39:22 +08:00
" $map " : 1
2019-01-19 08:18:34 +08:00
} ,
" read_latency_bands " : {
2019-02-08 05:39:22 +08:00
" $map " : 1
2019-01-19 08:18:34 +08:00
} ,
" commit_latency_bands " : {
2019-02-08 05:39:22 +08:00
" $map " : 1
2018-08-17 08:34:59 +08:00
}
}
] ,
" command_line " : " -r simulation " ,
" memory " : {
" available_bytes " : 0 ,
" limit_bytes " : 0 ,
" unused_allocated_memory " : 0 ,
" used_bytes " : 0
} ,
" messages " : [
{
" time " : 12345.12312 ,
" type " : " x " ,
" name " : {
" $enum " : [
" file_open_error " ,
" incorrect_cluster_file_contents " ,
" process_error " ,
" io_error " ,
" io_timeout " ,
" platform_error " ,
" storage_server_lagging " ,
" (other FDB error messages) "
]
} ,
" raw_log_message " : " <stuff/> " ,
" description " : " abc "
}
] ,
" fault_domain " : " 0ccb4e0fdbdb5583010f6b77d9d10ece " ,
2019-04-03 05:15:51 +08:00
" under_maintenance " : true ,
2018-08-17 08:34:59 +08:00
" excluded " : false ,
" address " : " 1.2.3.4:1234 " ,
" disk " : {
" free_bytes " : 3451233456234 ,
" reads " : {
" hz " : 0.0 ,
" counter " : 0 ,
" sectors " : 0
} ,
" busy " : 0.0 ,
" writes " : {
" hz " : 0.0 ,
" counter " : 0 ,
" sectors " : 0
} ,
" total_bytes " : 123412341234
} ,
" uptime_seconds " : 1234.2345 ,
" cpu " : {
" usage_cores " : 0.0
} ,
" network " : {
" current_connections " : 0 ,
" connections_established " : {
" hz " : 0.0
} ,
" connections_closed " : {
" hz " : 0.0
} ,
" connection_errors " : {
" hz " : 0.0
} ,
" megabits_sent " : {
" hz " : 0.0
} ,
" megabits_received " : {
" hz " : 0.0
}
}
}
} ,
" old_logs " : [
{
" logs " : [
{
" id " : " 7f8d623d0cb9966e " ,
" healthy " : true ,
" address " : " 1.2.3.4:1234 "
}
] ,
" log_replication_factor " : 3 ,
" log_write_anti_quorum " : 0 ,
" log_fault_tolerance " : 2 ,
" remote_log_replication_factor " : 3 ,
" remote_log_fault_tolerance " : 2 ,
" satellite_log_replication_factor " : 3 ,
" satellite_log_write_anti_quorum " : 0 ,
" satellite_log_fault_tolerance " : 2
}
] ,
" fault_tolerance " : {
" max_machine_failures_without_losing_availability " : 0 ,
" max_machine_failures_without_losing_data " : 0
} ,
" qos " : {
" worst_queue_bytes_log_server " : 460 ,
2019-03-01 04:00:58 +08:00
" batch_performance_limited_by " : {
" reason_server_id " : " 7f8d623d0cb9966e " ,
" reason_id " : 0 ,
" name " : {
" $enum " : [
" workload " ,
" storage_server_write_queue_size " ,
" storage_server_write_bandwidth_mvcc " ,
" storage_server_readable_behind " ,
" log_server_mvcc_write_bandwidth " ,
" log_server_write_queue " ,
" storage_server_min_free_space " ,
" storage_server_min_free_space_ratio " ,
" log_server_min_free_space " ,
2019-06-13 10:40:50 +08:00
" log_server_min_free_space_ratio " ,
" storage_server_read_load "
2019-03-01 04:00:58 +08:00
]
} ,
" description " : " The database is not being saturated by the workload. "
} ,
2018-08-17 08:34:59 +08:00
" performance_limited_by " : {
" reason_server_id " : " 7f8d623d0cb9966e " ,
2018-09-28 06:32:39 +08:00
" reason_id " : 0 ,
2018-08-17 08:34:59 +08:00
" name " : {
" $enum " : [
" workload " ,
" storage_server_write_queue_size " ,
" storage_server_write_bandwidth_mvcc " ,
" storage_server_readable_behind " ,
" log_server_mvcc_write_bandwidth " ,
" log_server_write_queue " ,
" storage_server_min_free_space " ,
" storage_server_min_free_space_ratio " ,
" log_server_min_free_space " ,
2019-06-13 10:40:50 +08:00
" log_server_min_free_space_ratio " ,
" storage_server_read_load "
2018-08-17 08:34:59 +08:00
]
} ,
" description " : " The database is not being saturated by the workload. "
} ,
2019-03-01 04:00:58 +08:00
" batch_transactions_per_second_limit " : 0 ,
2018-09-28 06:32:39 +08:00
" transactions_per_second_limit " : 0 ,
2019-03-01 04:00:58 +08:00
" batch_released_transactions_per_second " : 0 ,
2018-09-28 06:32:39 +08:00
" released_transactions_per_second " : 0 ,
" limiting_queue_bytes_storage_server " : 0 ,
2018-08-17 08:34:59 +08:00
" worst_queue_bytes_storage_server " : 0 ,
2018-09-28 06:32:39 +08:00
" limiting_version_lag_storage_server " : 0 ,
" worst_version_lag_storage_server " : 0
2018-08-17 08:34:59 +08:00
} ,
" incompatible_connections " : [
] ,
" datacenter_version_difference " : 0 ,
2019-03-11 13:58:15 +08:00
" degraded_processes " : 0 ,
2018-08-17 08:34:59 +08:00
" database_available " : true ,
" database_locked " : false ,
" generation " : 2 ,
" latency_probe " : {
" read_seconds " : 7 ,
2018-09-28 06:32:39 +08:00
" immediate_priority_transaction_start_seconds " : 0.0 ,
" batch_priority_transaction_start_seconds " : 0.0 ,
2018-08-17 08:34:59 +08:00
" transaction_start_seconds " : 0.0 ,
" commit_seconds " : 0.02
} ,
" clients " : {
" count " : 1 ,
" supported_versions " : [
{
" client_version " : " 3.0.0 " ,
" connected_clients " : [
{
" address " : " 127.0.0.1:9898 " ,
2019-02-27 08:20:05 +08:00
" log_group " : " default " ,
2019-03-06 13:00:19 +08:00
" connected_coordinators " : 2
2018-08-17 08:34:59 +08:00
}
] ,
" count " : 1 ,
" protocol_version " : " fdb00a400050001 " ,
" source_version " : " 9430e1127b4991cbc5ab2b17f41cfffa5de07e9d "
}
]
} ,
" messages " : [
{
" reasons " : [
{
" description " : " Blah. "
}
] ,
" unreachable_processes " : [
{
" address " : " 1.2.3.4:1234 "
}
] ,
" name " : {
" $enum " : [
" unreachable_master_worker " ,
2019-02-23 02:05:08 +08:00
" unreachable_dataDistributor_worker " ,
2019-02-23 07:04:38 +08:00
" unreachable_ratekeeper_worker " ,
2018-08-17 08:34:59 +08:00
" unreadable_configuration " ,
" full_replication_timeout " ,
" client_issues " ,
" unreachable_processes " ,
" immediate_priority_transaction_start_probe_timeout " ,
" batch_priority_transaction_start_probe_timeout " ,
" transaction_start_probe_timeout " ,
" read_probe_timeout " ,
" commit_probe_timeout " ,
" storage_servers_error " ,
" status_incomplete " ,
" layer_status_incomplete " ,
" database_availability_timeout "
]
} ,
" issues " : [
{
" name " : {
" $enum " : [
" incorrect_cluster_file_contents "
]
} ,
" description " : " Cluster file contents do not match current cluster connection string. Verify cluster file is writable and has not been overwritten externally. "
}
] ,
" description " : " abc "
}
] ,
2018-09-06 02:40:04 +08:00
) statusSchema " R " statusSchema (
2018-08-17 08:34:59 +08:00
" recovery_state " : {
" required_resolvers " : 1 ,
" required_proxies " : 1 ,
" name " : {
" $enum " : [
" reading_coordinated_state " ,
" locking_coordinated_state " ,
" locking_old_transaction_servers " ,
" reading_transaction_system_state " ,
" configuration_missing " ,
" configuration_never_created " ,
" configuration_invalid " ,
" recruiting_transaction_servers " ,
" initializing_transaction_servers " ,
" recovery_transaction " ,
" writing_coordinated_state " ,
" accepting_commits " ,
" all_logs_recruited " ,
" storage_recovered " ,
" fully_recovered "
]
} ,
" required_logs " : 3 ,
" missing_logs " : " 7f8d623d0cb9966e " ,
" description " : " Recovery complete. "
} ,
" workload " : {
" operations " : {
" writes " : {
" hz " : 0.0 ,
" counter " : 0 ,
" roughness " : 0.0
} ,
" reads " : {
" hz " : 0.0 ,
" counter " : 0 ,
" roughness " : 0.0
2018-09-28 06:32:39 +08:00
} ,
" read_requests " : {
" hz " : 0.0 ,
" counter " : 0 ,
" roughness " : 0.0
2018-08-17 08:34:59 +08:00
}
} ,
" bytes " : {
" written " : {
" hz " : 0.0 ,
" counter " : 0 ,
" roughness " : 0.0
} ,
" read " : {
" hz " : 0.0 ,
" counter " : 0 ,
" roughness " : 0.0
}
} ,
" keys " : {
" read " : {
" hz " : 0.0 ,
" counter " : 0 ,
" roughness " : 0.0
}
} ,
" transactions " : {
" started " : {
" hz " : 0.0 ,
" counter " : 0 ,
" roughness " : 0.0
} ,
" conflicted " : {
" hz " : 0.0 ,
" counter " : 0 ,
" roughness " : 0.0
} ,
" committed " : {
" hz " : 0.0 ,
" counter " : 0 ,
" roughness " : 0.0
}
}
} ,
" cluster_controller_timestamp " : 1415650089 ,
" protocol_version " : " fdb00a400050001 " ,
" connection_string " : " a:a@127.0.0.1:4000 " ,
" full_replication " : true ,
2019-04-03 05:15:51 +08:00
" maintenance_zone " : " 0ccb4e0fdbdb5583010f6b77d9d10ece " ,
" maintenance_seconds_remaining " : 1.0 ,
2018-08-17 08:34:59 +08:00
" configuration " : {
" log_anti_quorum " : 0 ,
" log_replicas " : 2 ,
" log_replication_policy " : " (zoneid^3x1) " ,
" redundancy_mode " : {
" $enum " : [
" single " ,
" double " ,
" triple " ,
" three_datacenter " ,
" three_datacenter_fallback " ,
2019-04-08 13:58:18 +08:00
" three_data_hall " ,
" three_data_hall_fallback "
2018-08-17 08:34:59 +08:00
] } ,
" regions " : [ {
" datacenters " : [ {
" id " : " mr " ,
" priority " : 1 ,
" satellite " : 1
} ] ,
" satellite_redundancy_mode " : {
" $enum " : [
" one_satellite_single " ,
" one_satellite_double " ,
" one_satellite_triple " ,
" two_satellite_safe " ,
" two_satellite_fast "
] } ,
" satellite_log_replicas " : 1 ,
" satellite_usable_dcs " : 1 ,
" satellite_anti_quorum " : 0 ,
" satellite_log_policy " : " (zoneid^3x1) " ,
" satellite_logs " : 2
} ] ,
" remote_redundancy_mode " : {
" $enum " : [
" remote_default " ,
" remote_single " ,
" remote_double " ,
" remote_triple " ,
" remote_three_data_hall "
] } ,
" remote_log_replicas " : 3 ,
" remote_logs " : 5 ,
" log_routers " : 10 ,
" usable_regions " : 1 ,
" repopulate_anti_quorum " : 1 ,
" storage_replicas " : 1 ,
" resolvers " : 1 ,
" storage_replication_policy " : " (zoneid^3x1) " ,
" logs " : 2 ,
2019-02-23 04:15:23 +08:00
" log_version " : 2 ,
2019-02-20 14:02:44 +08:00
" log_engine " : 1 ,
" log_spill " : 1 ,
2018-08-17 08:34:59 +08:00
" storage_engine " : {
" $enum " : [
" ssd " ,
" ssd-1 " ,
" ssd-2 " ,
2018-10-06 05:43:54 +08:00
" ssd-redwood-experimental " ,
2019-03-17 13:48:24 +08:00
" memory " ,
2019-03-19 06:10:04 +08:00
" memory-1 " ,
" memory-2 "
2018-08-17 08:34:59 +08:00
] } ,
" coordinators_count " : 1 ,
" excluded_servers " : [
{
" address " : " 10.0.4.1 "
}
] ,
" auto_proxies " : 3 ,
" auto_resolvers " : 1 ,
" auto_logs " : 3 ,
" proxies " : 5
} ,
" data " : {
" least_operating_space_bytes_log_server " : 0 ,
" average_partition_size_bytes " : 0 ,
" state " : {
" healthy " : true ,
" min_replicas_remaining " : 0 ,
" name " : {
" $enum " : [
" initializing " ,
" missing_data " ,
" healing " ,
2019-03-07 07:05:21 +08:00
" optimizing_team_collections " ,
2018-08-17 08:34:59 +08:00
" healthy_repartitioning " ,
" healthy_removing_server " ,
" healthy_rebalancing " ,
" healthy "
]
} ,
" description " : " "
} ,
" least_operating_space_ratio_storage_server " : 0.1 ,
" max_machine_failures_without_losing_availability " : 0 ,
" total_disk_used_bytes " : 0 ,
" total_kv_size_bytes " : 0 ,
" partitions_count " : 2 ,
" moving_data " : {
" total_written_bytes " : 0 ,
" in_flight_bytes " : 0 ,
" in_queue_bytes " : 0 ,
" highest_priority " : 0
} ,
" team_trackers " : [
{
" primary " : true ,
" in_flight_bytes " : 0 ,
" unhealthy_servers " : 0 ,
" state " : {
" healthy " : true ,
" min_replicas_remaining " : 0 ,
" name " : {
" $enum " : [
" initializing " ,
" missing_data " ,
" healing " ,
2019-03-07 07:05:21 +08:00
" optimizing_team_collections " ,
2018-08-17 08:34:59 +08:00
" healthy_repartitioning " ,
" healthy_removing_server " ,
" healthy_rebalancing " ,
" healthy "
]
} ,
" description " : " "
}
}
] ,
" least_operating_space_bytes_storage_server " : 0 ,
" max_machine_failures_without_losing_data " : 0
} ,
" machines " : {
" $map " : {
" network " : {
" megabits_sent " : {
" hz " : 0.0
} ,
" megabits_received " : {
" hz " : 0.0
} ,
" tcp_segments_retransmitted " : {
" hz " : 0.0
}
} ,
" memory " : {
" free_bytes " : 0 ,
" committed_bytes " : 0 ,
" total_bytes " : 0
} ,
" contributing_workers " : 4 ,
" datacenter_id " : " 6344abf1813eb05b " ,
" excluded " : false ,
" address " : " 1.2.3.4 " ,
" machine_id " : " 6344abf1813eb05b " ,
" locality " : {
" $map " : " value "
} ,
" cpu " : {
" logical_core_utilization " : 0.4
}
}
}
} ,
" client " : {
" coordinators " : {
" coordinators " : [
{
" reachable " : true ,
" address " : " 127.0.0.1:4701 "
}
] ,
" quorum_reachable " : true
} ,
" database_status " : {
" available " : true ,
" healthy " : true
} ,
" messages " : [
{
" name " : {
" $enum " : [
" inconsistent_cluster_file " ,
" unreachable_cluster_controller " ,
" no_cluster_controller " ,
" status_incomplete_client " ,
" status_incomplete_coordinators " ,
" status_incomplete_error " ,
" status_incomplete_timeout " ,
" status_incomplete_cluster " ,
" quorum_not_reachable "
]
} ,
" description " : " The cluster file is not up to date. "
}
] ,
" timestamp " : 1415650089 ,
" cluster_file " : {
" path " : " /etc/foundationdb/fdb.cluster " ,
" up_to_date " : true
}
}
} ) statusSchema " );
2019-01-19 08:18:34 +08:00
const KeyRef JSONSchemas : : clusterConfigurationSchema = LiteralStringRef ( R " configSchema(
2018-08-17 08:34:59 +08:00
{
" create " : {
" $enum " : [
" new "
] } ,
2018-09-05 13:16:35 +08:00
" log_anti_quorum " : 0 ,
2018-08-17 08:34:59 +08:00
" log_replicas " : 2 ,
" log_replication_policy " : " (zoneid^3x1) " ,
" redundancy_mode " : {
" $enum " : [
" single " ,
" double " ,
" triple " ,
" three_datacenter " ,
" three_datacenter_fallback " ,
2019-04-08 13:58:18 +08:00
" three_data_hall " ,
" three_data_hall_fallback "
2018-08-17 08:34:59 +08:00
] } ,
" regions " : [ {
2018-09-05 13:16:35 +08:00
" datacenters " : [ {
" id " : " mr " ,
" priority " : 1 ,
" satellite " : 1
} ] ,
" satellite_redundancy_mode " : {
" $enum " : [
" one_satellite_single " ,
" one_satellite_double " ,
" one_satellite_triple " ,
" two_satellite_safe " ,
" two_satellite_fast "
] } ,
" satellite_log_replicas " : 1 ,
" satellite_usable_dcs " : 1 ,
" satellite_anti_quorum " : 0 ,
" satellite_log_policy " : " (zoneid^3x1) " ,
" satellite_logs " : 2
2018-08-17 08:34:59 +08:00
} ] ,
" remote_redundancy_mode " : {
" $enum " : [
" remote_default " ,
" remote_single " ,
" remote_double " ,
" remote_triple " ,
" remote_three_data_hall "
] } ,
" remote_log_replicas " : 3 ,
" remote_logs " : 5 ,
" log_routers " : 10 ,
" usable_regions " : 1 ,
" repopulate_anti_quorum " : 1 ,
" storage_replicas " : 1 ,
" resolvers " : 1 ,
" storage_replication_policy " : " (zoneid^3x1) " ,
" logs " : 2 ,
" storage_engine " : {
" $enum " : [
" ssd " ,
" ssd-1 " ,
" ssd-2 " ,
" memory "
] } ,
" auto_proxies " : 3 ,
" auto_resolvers " : 1 ,
" auto_logs " : 3 ,
" proxies " : 5
} ) configSchema " );
2019-01-19 08:18:34 +08:00
const KeyRef JSONSchemas : : latencyBandConfigurationSchema = LiteralStringRef ( R " configSchema(
{
" get_read_version " : {
" bands " : [
0.0
]
} ,
" read " : {
" bands " : [
0.0
] ,
" max_key_selector_offset " : 0 ,
" max_read_bytes " : 0
} ,
" commit " : {
" bands " : [
0.0
] ,
" max_commit_bytes " : 0
}
} ) configSchema " );