Merge pull request #391 from AlvinMooreSr/release-5.1-remove-lineends

Removed Windows carriage returns
This commit is contained in:
A.J. Beamon 2018-05-17 09:53:21 -07:00 committed by GitHub
commit efc754889a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
23 changed files with 5819 additions and 5819 deletions

View File

@ -1,461 +1,461 @@
{
"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"
]
},
"roles":[
{
"query_queue_max":0,
"input_bytes":{
"hz":0.0,
"counter":0,
"roughness":0.0
},
"kvstore_used_bytes":12341234,
"stored_bytes":12341234,
"kvstore_free_bytes":12341234,
"durable_bytes":{
"hz":0.0,
"counter":0,
"roughness":0.0
},
"queue_disk_free_bytes":12341234,
"persistent_disk_used_bytes":12341234,
"role":{
"$enum":[
"master",
"proxy",
"log",
"storage",
"resolver",
"cluster_controller"
]
},
"data_version":12341234,
"data_version_lag":12341234,
"persistent_disk_total_bytes":12341234,
"queue_disk_total_bytes":12341234,
"persistent_disk_free_bytes":12341234,
"queue_disk_used_bytes":12341234,
"id":"eb84471d68c12d1d26f692a50000003f",
"kvstore_total_bytes":12341234,
"finished_queries":{
"hz":0.0,
"counter":0,
"roughness":0.0
}
}
],
"command_line":"-r simulation",
"memory":{
"available_bytes":0,
"limit_bytes":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",
"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
}
],
"fault_tolerance":{
"max_machine_failures_without_losing_availability":0,
"max_machine_failures_without_losing_data":0
},
"qos":{
"worst_queue_bytes_log_server":460,
"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",
"log_server_min_free_space_ratio"
]
},
"description":"The database is not being saturated by the workload."
},
"transactions_per_second_limit":0,
"released_transactions_per_second":0,
"limiting_queue_bytes_storage_server":0,
"worst_queue_bytes_storage_server":0,
"limiting_version_lag_storage_server":0,
"worst_version_lag_storage_server":0
},
"incompatible_connections":[
],
"database_available":true,
"database_locked":false,
"generation":2,
"latency_probe":{
"read_seconds":7,
"immediate_priority_transaction_start_seconds":0.0,
"batch_priority_transaction_start_seconds":0.0,
"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",
"log_group":"default"
}
],
"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",
"unreadable_configuration",
"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"
}
],
"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",
"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
}
},
"bytes":{
"written":{
"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",
"configuration":{
"resolvers":1,
"redundancy":{
"factor":{
"$enum":[
"single",
"double",
"triple",
"custom",
"two_datacenter",
"three_datacenter",
"three_data_hall",
"fast_recovery_double",
"fast_recovery_triple"
]
}
},
"storage_policy":"(zoneid^3x1)",
"tlog_policy":"(zoneid^2x1)",
"logs":2,
"storage_engine":{
"$enum":[
"ssd",
"ssd-1",
"ssd-2",
"memory",
"custom"
]
},
"coordinators_count":1,
"excluded_servers":[
{
"address":"10.0.4.1"
}
],
"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",
"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
},
"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
}
}
}
{
"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"
]
},
"roles":[
{
"query_queue_max":0,
"input_bytes":{
"hz":0.0,
"counter":0,
"roughness":0.0
},
"kvstore_used_bytes":12341234,
"stored_bytes":12341234,
"kvstore_free_bytes":12341234,
"durable_bytes":{
"hz":0.0,
"counter":0,
"roughness":0.0
},
"queue_disk_free_bytes":12341234,
"persistent_disk_used_bytes":12341234,
"role":{
"$enum":[
"master",
"proxy",
"log",
"storage",
"resolver",
"cluster_controller"
]
},
"data_version":12341234,
"data_version_lag":12341234,
"persistent_disk_total_bytes":12341234,
"queue_disk_total_bytes":12341234,
"persistent_disk_free_bytes":12341234,
"queue_disk_used_bytes":12341234,
"id":"eb84471d68c12d1d26f692a50000003f",
"kvstore_total_bytes":12341234,
"finished_queries":{
"hz":0.0,
"counter":0,
"roughness":0.0
}
}
],
"command_line":"-r simulation",
"memory":{
"available_bytes":0,
"limit_bytes":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",
"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
}
],
"fault_tolerance":{
"max_machine_failures_without_losing_availability":0,
"max_machine_failures_without_losing_data":0
},
"qos":{
"worst_queue_bytes_log_server":460,
"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",
"log_server_min_free_space_ratio"
]
},
"description":"The database is not being saturated by the workload."
},
"transactions_per_second_limit":0,
"released_transactions_per_second":0,
"limiting_queue_bytes_storage_server":0,
"worst_queue_bytes_storage_server":0,
"limiting_version_lag_storage_server":0,
"worst_version_lag_storage_server":0
},
"incompatible_connections":[
],
"database_available":true,
"database_locked":false,
"generation":2,
"latency_probe":{
"read_seconds":7,
"immediate_priority_transaction_start_seconds":0.0,
"batch_priority_transaction_start_seconds":0.0,
"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",
"log_group":"default"
}
],
"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",
"unreadable_configuration",
"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"
}
],
"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",
"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
}
},
"bytes":{
"written":{
"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",
"configuration":{
"resolvers":1,
"redundancy":{
"factor":{
"$enum":[
"single",
"double",
"triple",
"custom",
"two_datacenter",
"three_datacenter",
"three_data_hall",
"fast_recovery_double",
"fast_recovery_triple"
]
}
},
"storage_policy":"(zoneid^3x1)",
"tlog_policy":"(zoneid^2x1)",
"logs":2,
"storage_engine":{
"$enum":[
"ssd",
"ssd-1",
"ssd-2",
"memory",
"custom"
]
},
"coordinators_count":1,
"excluded_servers":[
{
"address":"10.0.4.1"
}
],
"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",
"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
},
"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
}
}
}

View File

@ -1,27 +1,27 @@
#
# brokenrole.py
#
# 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.
#
def setup(app):
app.add_role('broken', broken_role)
def broken_role(name, rawtext, text, lineno, inliner, options={}, content=[]):
msg = inliner.reporter.error('Broken role invoked', line=lineno)
prb = inliner.problematic(rawtext,rawtext,msg)
return [prb],[msg]
#
# brokenrole.py
#
# 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.
#
def setup(app):
app.add_role('broken', broken_role)
def broken_role(name, rawtext, text, lineno, inliner, options={}, content=[]):
msg = inliner.reporter.error('Broken role invoked', line=lineno)
prb = inliner.problematic(rawtext,rawtext,msg)
return [prb],[msg]

View File

@ -1,48 +1,48 @@
#
# relativelink.py
#
# 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.
#
from sphinx.addnodes import toctree
# This extension cruelly monkey patches sphinx.environment.BuildEnvironment so
# that toctree entries can contain relative internal links, using the syntax
# Name <relative://relative/path>
# This is translated into an href="relative/path"
# Relative links already work fine outside the toctree:
# Name <relative/path>_
def setup(app):
import sphinx.environment
from docutils import nodes
old_resolve = sphinx.environment.BuildEnvironment.resolve_toctree
def resolve_toctree(self, docname, builder, toctree, prune=True, maxdepth=0,
titles_only=False, collapse=False, includehidden=False):
result = old_resolve(self, docname, builder, toctree, prune=True, maxdepth=0,
titles_only=False, collapse=False, includehidden=False)
if result == None:
return result
for node in result.traverse( nodes.reference ):
if not node['internal'] and node['refuri'].startswith("relative://"):
node['refuri'] = node['refuri'][len("relative://"):]
return result
sphinx.environment.BuildEnvironment.resolve_toctree = resolve_toctree
#
# relativelink.py
#
# 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.
#
from sphinx.addnodes import toctree
# This extension cruelly monkey patches sphinx.environment.BuildEnvironment so
# that toctree entries can contain relative internal links, using the syntax
# Name <relative://relative/path>
# This is translated into an href="relative/path"
# Relative links already work fine outside the toctree:
# Name <relative/path>_
def setup(app):
import sphinx.environment
from docutils import nodes
old_resolve = sphinx.environment.BuildEnvironment.resolve_toctree
def resolve_toctree(self, docname, builder, toctree, prune=True, maxdepth=0,
titles_only=False, collapse=False, includehidden=False):
result = old_resolve(self, docname, builder, toctree, prune=True, maxdepth=0,
titles_only=False, collapse=False, includehidden=False)
if result == None:
return result
for node in result.traverse( nodes.reference ):
if not node['internal'] and node['refuri'].startswith("relative://"):
node['refuri'] = node['refuri'][len("relative://"):]
return result
sphinx.environment.BuildEnvironment.resolve_toctree = resolve_toctree

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,77 +1,77 @@
#######################
Release Notes (Alpha 5)
#######################
FoundationDB Alpha 5
====================
Language support
-------------------------
* FoundationDB now supports :doc:`Ruby </api-ruby>`
* FoundationDB now supports :doc:`Node.js </api-node>`
* FoundationDB now supports `Java </javadoc/index.html>`_ and other JVM languages.
.. _alpha-5-rel-notes-features:
Features
------------
* A new :doc:`backup </backups>` system allows scheduled backups of a snapshot of the FoundationDB database to an external filesystem.
* :doc:`Integrated HTML documentation </index>`
* :ref:`Snapshot reads <snapshot isolation>` allow API clients to selectively relax FoundationDB's strong isolation guarantee. Appropriate use can of them can reduce :ref:`conflict-ranges` but makes reasoning about concurrency harder.
* :ref:`Streaming modes <streaming-mode-python>` allow API clients to adjust how FoundationDB transfers data for range reads for improved performance.
* Client APIs automatically detect the appropriate network interface (local address) when connecting to a cluster, and will look for a :ref:`default-cluster-file`.
Compatibility
-------------
* Tuples encoded with prior alpha versions are incompatible with the tuple layer in Alpha 5.
* Databases created with Alpha 4 will be compatible. (See :ref:`Upgrading from older versions <upgrading-from-older-versions>` for upgrade instructions)
* Databases created before Alpha 4 will be incompatible. (See :ref:`Upgrading from older versions <upgrading-from-older-versions>` for details)
Changes to all APIs
-------------------
* The API version has been updated to 14.
* :ref:`Snapshot reads <snapshot isolation>` (see :ref:`Features <alpha-5-rel-notes-features>`, above).
* :ref:`Streaming modes <streaming-mode-python>` (see :ref:`Features <alpha-5-rel-notes-features>`, above).
* Automatic network interface detection (see :ref:`Features <alpha-5-rel-notes-features>`, above).
* The tuple layer supports unicode strings (encoded as UTF-8), has a more compact encoding, and is not compatible with data from prior versions.
* Reversed range reads are now exposed through a separate parameter rather than via a negative ``limit``.
* Extensible options are now exposed at the network, cluster, database and transaction levels. The parameters to :c:func:`fdb_setup_network` and :py:func:`fdb.init` have been replaced by network options.
* Option enumerations are available in a machine-readable format for the benefit of third-party language binding developers.
Python API changes
------------------
* :py:func:`fdb.open` can be called with no parameters to use the :ref:`default-cluster-file`.
* Waiting on a Future object has changed from ``.get()`` to :py:meth:`.wait() <fdb.Future.wait>`
* Reversed range reads can by specified by passing a slice object with a -1 step.
* The convenience read methods on :py:class:`fdb.Database` are now transactional.
C API changes
-------------
* Byte limits exposed in :c:func:`fdb_transaction_get_range`. These are not currently exposed by any of the higher level clients (and usually streaming modes should be preferred).
* :c:func:`fdb_future_get_keyvalue_array` returns an explicit flag indicating whether there is more data in the range beyond the limits passed to :c:func:`fdb_transaction_get_range`.
* ``fdb_transaction_get_range_selector`` has been eliminated - :c:func:`fdb_transaction_get_range` always takes key selectors.
#######################
Release Notes (Alpha 5)
#######################
FoundationDB Alpha 5
====================
Language support
-------------------------
* FoundationDB now supports :doc:`Ruby </api-ruby>`
* FoundationDB now supports :doc:`Node.js </api-node>`
* FoundationDB now supports `Java </javadoc/index.html>`_ and other JVM languages.
.. _alpha-5-rel-notes-features:
Features
------------
* A new :doc:`backup </backups>` system allows scheduled backups of a snapshot of the FoundationDB database to an external filesystem.
* :doc:`Integrated HTML documentation </index>`
* :ref:`Snapshot reads <snapshot isolation>` allow API clients to selectively relax FoundationDB's strong isolation guarantee. Appropriate use can of them can reduce :ref:`conflict-ranges` but makes reasoning about concurrency harder.
* :ref:`Streaming modes <streaming-mode-python>` allow API clients to adjust how FoundationDB transfers data for range reads for improved performance.
* Client APIs automatically detect the appropriate network interface (local address) when connecting to a cluster, and will look for a :ref:`default-cluster-file`.
Compatibility
-------------
* Tuples encoded with prior alpha versions are incompatible with the tuple layer in Alpha 5.
* Databases created with Alpha 4 will be compatible. (See :ref:`Upgrading from older versions <upgrading-from-older-versions>` for upgrade instructions)
* Databases created before Alpha 4 will be incompatible. (See :ref:`Upgrading from older versions <upgrading-from-older-versions>` for details)
Changes to all APIs
-------------------
* The API version has been updated to 14.
* :ref:`Snapshot reads <snapshot isolation>` (see :ref:`Features <alpha-5-rel-notes-features>`, above).
* :ref:`Streaming modes <streaming-mode-python>` (see :ref:`Features <alpha-5-rel-notes-features>`, above).
* Automatic network interface detection (see :ref:`Features <alpha-5-rel-notes-features>`, above).
* The tuple layer supports unicode strings (encoded as UTF-8), has a more compact encoding, and is not compatible with data from prior versions.
* Reversed range reads are now exposed through a separate parameter rather than via a negative ``limit``.
* Extensible options are now exposed at the network, cluster, database and transaction levels. The parameters to :c:func:`fdb_setup_network` and :py:func:`fdb.init` have been replaced by network options.
* Option enumerations are available in a machine-readable format for the benefit of third-party language binding developers.
Python API changes
------------------
* :py:func:`fdb.open` can be called with no parameters to use the :ref:`default-cluster-file`.
* Waiting on a Future object has changed from ``.get()`` to :py:meth:`.wait() <fdb.Future.wait>`
* Reversed range reads can by specified by passing a slice object with a -1 step.
* The convenience read methods on :py:class:`fdb.Database` are now transactional.
C API changes
-------------
* Byte limits exposed in :c:func:`fdb_transaction_get_range`. These are not currently exposed by any of the higher level clients (and usually streaming modes should be preferred).
* :c:func:`fdb_future_get_keyvalue_array` returns an explicit flag indicating whether there is more data in the range beyond the limits passed to :c:func:`fdb_transaction_get_range`.
* ``fdb_transaction_get_range_selector`` has been eliminated - :c:func:`fdb_transaction_get_range` always takes key selectors.

View File

@ -1,71 +1,71 @@
#######################
Release Notes (Alpha 6)
#######################
FoundationDB Alpha 6
====================
Platform support
-------------------------
* FoundationDB now supports both clients and development servers on :doc:`Mac OS X </getting-started-mac>`.
* FoundationDB now supports both clients and development servers on (64-bit) Windows.
* All language APIs are supported on Linux, Mac, and Windows (except for Ruby on Windows, because there is not a 64-bit Ruby for Windows.)
Features
------------
* The set of coordination servers can be safely :ref:`changed <configuration-changing-coordination-servers>` on-the-fly via the CLI.
* Unintentional deletion of the coordination state files is now ACID-safe and self-correcting when a majority of the state files still exist.
* The :ref:`foundationdb.conf <foundationdb-conf>` file format has changed.
* A new more flexible and automatic system for :ref:`network configuration <foundationdb-conf-fdbserver>`. Common server setups will auto-configure using the cluster file. More advanced setups are supported via separate configurable listen and public addresses.
* The CLI now support tab-completion.
* The CLI now supports setting transaction options
* The CLI has a new command "getrangekeys" that returns the keys in a range and omits the values.
* The database size estimate shown in the CLI status is much more accurate.
Performance
--------------
* Improved latency performance for intense workloads with range-read operations.
* Improved performance and decreased memory usage for certain intense write workloads targeting a small set of keys (such as sequential insert).
Fixes
--------
* An incorrect result could be returned by a range read when: (1) The range start was specified using a non-default "less than" type key selector; and (2) the range read started at the beginning of the database; and (3) the transaction also included a prior write to a key less than the key of the begin key selector.
* In certain cases a FoundationDB cluster would not correctly re-configure itself to achieve a more optimal usage of servers of specific machine classes.
Changes to all APIs
-------------------
* The API version has been updated from 14 to 16. (Thanks to our API versioning technology, programs requesting API version 14 will work unmodified.)
* Calling the :py:meth:`reset <fdb.Transaction.reset>` method of a transaction now also resets transaction options.
* :ref:`System keys <system-keys>` (those beginning with the byte ``0xFF``) are now inaccessible by default.
* Simpler network setup: The network connection options are no longer necessary and have been deprecated.
* Three new transaction options (:py:meth:`READ_AHEAD_DISABLE <fdb.Transaction.options.set_read_ahead_disable>`, :py:meth:`READ_YOUR_WRITES_DISABLE <fdb.Transaction.options.set_read_your_writes_disable>`, and :py:meth:`ACCESS_SYSTEM_KEYS <fdb.Transaction.options.set_access_system_keys>`) enable more control for advanced applications.
Changes to the Java API
------------------------
* A new construct `AsyncUtil.whileTrue() <../javadoc/com/apple/cie/foundationdb/async/AsyncUtil.html#whileTrue-com.apple.foundationdb.async.Function->`_ simplifies writing loops using the asynchronous version of the Java FDB client.
Earlier release notes
---------------------
For changes in alpha 5, see :doc:`Release Notes (Alpha 5) <release-notes-014>`.
#######################
Release Notes (Alpha 6)
#######################
FoundationDB Alpha 6
====================
Platform support
-------------------------
* FoundationDB now supports both clients and development servers on :doc:`Mac OS X </getting-started-mac>`.
* FoundationDB now supports both clients and development servers on (64-bit) Windows.
* All language APIs are supported on Linux, Mac, and Windows (except for Ruby on Windows, because there is not a 64-bit Ruby for Windows.)
Features
------------
* The set of coordination servers can be safely :ref:`changed <configuration-changing-coordination-servers>` on-the-fly via the CLI.
* Unintentional deletion of the coordination state files is now ACID-safe and self-correcting when a majority of the state files still exist.
* The :ref:`foundationdb.conf <foundationdb-conf>` file format has changed.
* A new more flexible and automatic system for :ref:`network configuration <foundationdb-conf-fdbserver>`. Common server setups will auto-configure using the cluster file. More advanced setups are supported via separate configurable listen and public addresses.
* The CLI now support tab-completion.
* The CLI now supports setting transaction options
* The CLI has a new command "getrangekeys" that returns the keys in a range and omits the values.
* The database size estimate shown in the CLI status is much more accurate.
Performance
--------------
* Improved latency performance for intense workloads with range-read operations.
* Improved performance and decreased memory usage for certain intense write workloads targeting a small set of keys (such as sequential insert).
Fixes
--------
* An incorrect result could be returned by a range read when: (1) The range start was specified using a non-default "less than" type key selector; and (2) the range read started at the beginning of the database; and (3) the transaction also included a prior write to a key less than the key of the begin key selector.
* In certain cases a FoundationDB cluster would not correctly re-configure itself to achieve a more optimal usage of servers of specific machine classes.
Changes to all APIs
-------------------
* The API version has been updated from 14 to 16. (Thanks to our API versioning technology, programs requesting API version 14 will work unmodified.)
* Calling the :py:meth:`reset <fdb.Transaction.reset>` method of a transaction now also resets transaction options.
* :ref:`System keys <system-keys>` (those beginning with the byte ``0xFF``) are now inaccessible by default.
* Simpler network setup: The network connection options are no longer necessary and have been deprecated.
* Three new transaction options (:py:meth:`READ_AHEAD_DISABLE <fdb.Transaction.options.set_read_ahead_disable>`, :py:meth:`READ_YOUR_WRITES_DISABLE <fdb.Transaction.options.set_read_your_writes_disable>`, and :py:meth:`ACCESS_SYSTEM_KEYS <fdb.Transaction.options.set_access_system_keys>`) enable more control for advanced applications.
Changes to the Java API
------------------------
* A new construct `AsyncUtil.whileTrue() <../javadoc/com/apple/cie/foundationdb/async/AsyncUtil.html#whileTrue-com.apple.foundationdb.async.Function->`_ simplifies writing loops using the asynchronous version of the Java FDB client.
Earlier release notes
---------------------
For changes in alpha 5, see :doc:`Release Notes (Alpha 5) <release-notes-014>`.

View File

@ -1,85 +1,85 @@
######################
Release Notes (Beta 1)
######################
Beta 1
======
Platform support
----------------
* Added AWS CloudFormation support for FoundationDB.
Features
--------
* Servers can be safely :ref:`removed <removing-machines-from-a-cluster>` from the cluster.
* :ref:`Improved status <administration-monitoring-cluster-status>` with information about database configuration, health, workload, and performance.
* Improved resiliency against low disk space conditions.
* The CLI can automatically choose :ref:`coordination servers <configuration-changing-coordination-servers>`.
* The CLI allows multiple semicolon separated commands per line; a new --exec flag was added to the CLI to pass commands to the CLI and quit when done.
* Old :ref:`log files <administration-managing-trace-files>` are automatically deleted.
* More specific :ref:`error codes <developer-guide-error-codes>`.
Performance
-----------
* Reduced latency of getRange when iterating through large amounts of data.
* Reduced idle CPU usage.
* Java API: Join in ArrayUtil is efficient for all container types.
* Java API: Optimized tuple creation.
Changes to all APIs
-------------------
* The API version has been updated from 16 to 21. (Thanks to our API versioning technology, programs requesting earlier API versions will work unmodified.) There are no changes required to migrate from version 16 to 21.
Fixes
-----
* Commit could return the error commit_conflict (renamed to not_committed) after the transaction successfully committed. (This was previously documented as a known limitation.)
* If a call to commit returned an error, but onError was not called, the transaction would not be reset.
* The memory storage engine was too aggressive in reserving disk space.
* If a key selector in a getRange resolved to the beginning or the end of the database, then its transaction may not have correctly conflicted with other transactions.
* Ranges passed to clearRange and getRange with the begin key larger than the end could incorrectly cause client API errors.
* Databases with small amounts of data in them (~20000 bytes) would sometimes slowly move data back and forth between the servers.
* Large network latencies (> ~250 ms) could impede data balancing between servers.
* Setting callbacks or calling ``blockUntilReady`` on a future from multiple threads resulted in an error.
* If a machine running the memory storage engine was killed multiple times in close succession, data loss might occur.
* C: The headers were not standards compliant and would not compile in some environments.
* Ruby: API versions were not checked for validity.
* Windows: The server could crash on non-English versions of Windows.
* Windows: Manually running fdbserver.exe could fail because of overly restrictive permissions set on shared resources.
* OS X: Java client had an extraneous linker dependency.
* Java: In multithreaded conditions, getRange and AsyncUtil.whileTrue() could sometimes never return.
* Python/Ruby: In multithreaded conditions, the client worker thread could crash.
Earlier release notes
---------------------
* :doc:`Alpha 6 (API Version 16) <release-notes-016>`
* :doc:`Alpha 5 (API Version 14) <release-notes-014>`
######################
Release Notes (Beta 1)
######################
Beta 1
======
Platform support
----------------
* Added AWS CloudFormation support for FoundationDB.
Features
--------
* Servers can be safely :ref:`removed <removing-machines-from-a-cluster>` from the cluster.
* :ref:`Improved status <administration-monitoring-cluster-status>` with information about database configuration, health, workload, and performance.
* Improved resiliency against low disk space conditions.
* The CLI can automatically choose :ref:`coordination servers <configuration-changing-coordination-servers>`.
* The CLI allows multiple semicolon separated commands per line; a new --exec flag was added to the CLI to pass commands to the CLI and quit when done.
* Old :ref:`log files <administration-managing-trace-files>` are automatically deleted.
* More specific :ref:`error codes <developer-guide-error-codes>`.
Performance
-----------
* Reduced latency of getRange when iterating through large amounts of data.
* Reduced idle CPU usage.
* Java API: Join in ArrayUtil is efficient for all container types.
* Java API: Optimized tuple creation.
Changes to all APIs
-------------------
* The API version has been updated from 16 to 21. (Thanks to our API versioning technology, programs requesting earlier API versions will work unmodified.) There are no changes required to migrate from version 16 to 21.
Fixes
-----
* Commit could return the error commit_conflict (renamed to not_committed) after the transaction successfully committed. (This was previously documented as a known limitation.)
* If a call to commit returned an error, but onError was not called, the transaction would not be reset.
* The memory storage engine was too aggressive in reserving disk space.
* If a key selector in a getRange resolved to the beginning or the end of the database, then its transaction may not have correctly conflicted with other transactions.
* Ranges passed to clearRange and getRange with the begin key larger than the end could incorrectly cause client API errors.
* Databases with small amounts of data in them (~20000 bytes) would sometimes slowly move data back and forth between the servers.
* Large network latencies (> ~250 ms) could impede data balancing between servers.
* Setting callbacks or calling ``blockUntilReady`` on a future from multiple threads resulted in an error.
* If a machine running the memory storage engine was killed multiple times in close succession, data loss might occur.
* C: The headers were not standards compliant and would not compile in some environments.
* Ruby: API versions were not checked for validity.
* Windows: The server could crash on non-English versions of Windows.
* Windows: Manually running fdbserver.exe could fail because of overly restrictive permissions set on shared resources.
* OS X: Java client had an extraneous linker dependency.
* Java: In multithreaded conditions, getRange and AsyncUtil.whileTrue() could sometimes never return.
* Python/Ruby: In multithreaded conditions, the client worker thread could crash.
Earlier release notes
---------------------
* :doc:`Alpha 6 (API Version 16) <release-notes-016>`
* :doc:`Alpha 5 (API Version 14) <release-notes-014>`

View File

@ -1,65 +1,65 @@
######################
Release Notes (Beta 2)
######################
Beta 2
======
Features
--------
* ``fdbcli`` history is stored between sessions; consecutive duplicate commands are stored as a single history entry
* The ``fdbcli`` tool prints a minimal cluster status message if an operation does not complete in 5 seconds.
Performance
-----------
* Support for databases up to 100TB (aggregate key-value size). We recommend you contact us for configuration suggestions for databases exceeding 10TB.
* Reduced client CPU usage when returning locally cached values.
* Clients do not write to the database if a value is set to its known current value.
* Improved transaction queuing behavior when a significant portion of transactions are "System Immediate" priority.
* Reduced downtime in certain server-rejoin situations.
Language APIs
-------------
* All
* The API version has been updated from 21 to 22. (Thanks to our API versioning technology, programs requesting earlier API versions will work unmodified.) There are no changes required to migrate from version 21 to 22.
* The ``open()`` call blocks until the client can communicate with the cluster.
* Node.js
* Support for Node.js v0.10.x.
* Functions throw errors of type ``FDBError``.
* Removed some variables from the global scope.
* Java
* Compiles class files with 1.6 source and target flags.
* Single-jar packaging for all platforms. (In rare cases, setting the ``FDB_LIBRARY_PATH_FDB_JAVA`` environment variable will be requried if you previously relied on loading the library from a system path.)
* Ruby
* Support for Ruby on Windows. Requires Ruby version at least 2.0.0 (x64).
* Added implementation of ``on_ready()``.
Fixes
-----
* Coordinators could fail to respond if they were busy with other work.
* Fixed a rare segmentation fault on cluster shutdown.
* Fixed an issue where CLI status could sometimes fail.
* Status showed the wrong explanation when performance was limited by system write-to-read latency limit.
* Fixed a rare issue where a "stuck" process trying to participate in the database could run out of RAM.
* Increased robustness of FoundationDB server when loaded with large data sets.
* Eliminated certain cases where the data distribution algorithim could do unnecessary splitting and merging work.
* Several fixes for rare issues encountered by our fault simulation framework.
* Certain uncommon usage of on_ready() in Python could cause segmentation faults.
Earlier release notes
---------------------
* :doc:`Beta 1 (API Version 21) <release-notes-021>`
* :doc:`Alpha 6 (API Version 16) <release-notes-016>`
* :doc:`Alpha 5 (API Version 14) <release-notes-014>`
######################
Release Notes (Beta 2)
######################
Beta 2
======
Features
--------
* ``fdbcli`` history is stored between sessions; consecutive duplicate commands are stored as a single history entry
* The ``fdbcli`` tool prints a minimal cluster status message if an operation does not complete in 5 seconds.
Performance
-----------
* Support for databases up to 100TB (aggregate key-value size). We recommend you contact us for configuration suggestions for databases exceeding 10TB.
* Reduced client CPU usage when returning locally cached values.
* Clients do not write to the database if a value is set to its known current value.
* Improved transaction queuing behavior when a significant portion of transactions are "System Immediate" priority.
* Reduced downtime in certain server-rejoin situations.
Language APIs
-------------
* All
* The API version has been updated from 21 to 22. (Thanks to our API versioning technology, programs requesting earlier API versions will work unmodified.) There are no changes required to migrate from version 21 to 22.
* The ``open()`` call blocks until the client can communicate with the cluster.
* Node.js
* Support for Node.js v0.10.x.
* Functions throw errors of type ``FDBError``.
* Removed some variables from the global scope.
* Java
* Compiles class files with 1.6 source and target flags.
* Single-jar packaging for all platforms. (In rare cases, setting the ``FDB_LIBRARY_PATH_FDB_JAVA`` environment variable will be requried if you previously relied on loading the library from a system path.)
* Ruby
* Support for Ruby on Windows. Requires Ruby version at least 2.0.0 (x64).
* Added implementation of ``on_ready()``.
Fixes
-----
* Coordinators could fail to respond if they were busy with other work.
* Fixed a rare segmentation fault on cluster shutdown.
* Fixed an issue where CLI status could sometimes fail.
* Status showed the wrong explanation when performance was limited by system write-to-read latency limit.
* Fixed a rare issue where a "stuck" process trying to participate in the database could run out of RAM.
* Increased robustness of FoundationDB server when loaded with large data sets.
* Eliminated certain cases where the data distribution algorithim could do unnecessary splitting and merging work.
* Several fixes for rare issues encountered by our fault simulation framework.
* Certain uncommon usage of on_ready() in Python could cause segmentation faults.
Earlier release notes
---------------------
* :doc:`Beta 1 (API Version 21) <release-notes-021>`
* :doc:`Alpha 6 (API Version 16) <release-notes-016>`
* :doc:`Alpha 5 (API Version 14) <release-notes-014>`

View File

@ -1,64 +1,64 @@
######################
Release Notes (Beta 3)
######################
Beta 3
======
The Beta 3 release focuses on major improvements across our language APIs, including new capabilities for locality, watches, transaction cancellation and timeouts, explicit conflict ranges, and atomic operations. It also improves performance and removes known limitations.
Features
--------
* Discover where keys are physically stored using the new :ref:`locality <api-python-locality>` API.
* Create :ref:`watches <api-python-watches>` that asynchronously report changes to the values of specified keys.
* :ref:`Cancel <api-python-cancel>` transactions or set them to automatically :ref:`timeout <api-python-timeout>` and cancel.
* Explicitly add read or write :ref:`conflict ranges <api-python-conflict-ranges>`.
* Perform :ref:`atomic operations <api-python-transaction-atomic-operations>` that transform a value (e.g. incrementing it) without client reads to avoid transaction conflicts.
* API version updated to 23.
Java
----
Based on customer feedback and internal testing, the API has been significantly revised for increased performance and ease of use. This is a **breaking** API change. We will continue to make the previous JAR
available for the time being.
* The asynchronous programming library has been moved to its own package (``com.foundationdb.async``). The library has a host of new members for greater flexibility and more predictable error handling.
* ``Database.run(...)`` can now return an arbitrary object from user code, simplifying use of this recommended retry loop.
* The new interface ``Function`` replaces several interfaces: ``Mapper``, ``Block``, ``Retryable``, and ``AsyncRetryable``.
* Added the ability to cancel any ``Future`` instance, even one not backed with native resources.
* Removed ``onSuccess()`` and ``onFailure()`` in favor of ``map()`` and ``flatMap()``. If code needs simple triggering, ``onReady()`` is still available.
* Range iteration via ``Transaction.getRange(...)`` starts fetching data immediately upon invocation. This simplifies development of code that reads ranges in parallel.
* Many other changes that facilitate writing fast, efficient, and correct Java applications!
Python
------
* Python API methods that :ref:`accept a key <api-python-keys>` will also accept a Python object with an ``as_foundationdb_key()`` method that returns a key. Likewise, methods that accept a value will also accept a Python object with an ``as_foundationdb_value()`` method that returns a value.
Performance
-----------
* Clients can preferentially communicate with servers on the same machine or in the same datacenter for :ref:`location-aware load balancing <api-python-database-options>`.
* Removed from the client library debugging code included in versions up through Beta 2, leading to higher, more predictable performance.
* Improved data distribution algorithms to optimize data movement during failure scenarios.
* Improved range-read iterators in Node.js using lazy evaluation.
* Improved client-side range-read prefetching in Node.js, Ruby, and Python.
* Incrementally improved performance across all language bindings.
Fixes
-----
* A storage node could be prevented from rejoining the cluster until the process was restarted.
* A reverse ``GetRange`` request using a row limit and an end key selector that enters the system keyspace could return too few results.
* A machine power loss immediately following a process restart could result in an invalid transaction log.
* ``GetRange`` could improperly cache too large a range of data when the end key selector resolved past the end of user keyspace, temporarily resulting in incorrect answers to read requests.
* In Node.js, reusing a range iterator for a second request could result in an incomplete result set.
Earlier release notes
---------------------
* :doc:`Beta 2 (API Version 22) <release-notes-022>`
* :doc:`Beta 1 (API Version 21) <release-notes-023>`
* :doc:`Alpha 6 (API Version 16) <release-notes-016>`
* :doc:`Alpha 5 (API Version 14) <release-notes-014>`
######################
Release Notes (Beta 3)
######################
Beta 3
======
The Beta 3 release focuses on major improvements across our language APIs, including new capabilities for locality, watches, transaction cancellation and timeouts, explicit conflict ranges, and atomic operations. It also improves performance and removes known limitations.
Features
--------
* Discover where keys are physically stored using the new :ref:`locality <api-python-locality>` API.
* Create :ref:`watches <api-python-watches>` that asynchronously report changes to the values of specified keys.
* :ref:`Cancel <api-python-cancel>` transactions or set them to automatically :ref:`timeout <api-python-timeout>` and cancel.
* Explicitly add read or write :ref:`conflict ranges <api-python-conflict-ranges>`.
* Perform :ref:`atomic operations <api-python-transaction-atomic-operations>` that transform a value (e.g. incrementing it) without client reads to avoid transaction conflicts.
* API version updated to 23.
Java
----
Based on customer feedback and internal testing, the API has been significantly revised for increased performance and ease of use. This is a **breaking** API change. We will continue to make the previous JAR
available for the time being.
* The asynchronous programming library has been moved to its own package (``com.foundationdb.async``). The library has a host of new members for greater flexibility and more predictable error handling.
* ``Database.run(...)`` can now return an arbitrary object from user code, simplifying use of this recommended retry loop.
* The new interface ``Function`` replaces several interfaces: ``Mapper``, ``Block``, ``Retryable``, and ``AsyncRetryable``.
* Added the ability to cancel any ``Future`` instance, even one not backed with native resources.
* Removed ``onSuccess()`` and ``onFailure()`` in favor of ``map()`` and ``flatMap()``. If code needs simple triggering, ``onReady()`` is still available.
* Range iteration via ``Transaction.getRange(...)`` starts fetching data immediately upon invocation. This simplifies development of code that reads ranges in parallel.
* Many other changes that facilitate writing fast, efficient, and correct Java applications!
Python
------
* Python API methods that :ref:`accept a key <api-python-keys>` will also accept a Python object with an ``as_foundationdb_key()`` method that returns a key. Likewise, methods that accept a value will also accept a Python object with an ``as_foundationdb_value()`` method that returns a value.
Performance
-----------
* Clients can preferentially communicate with servers on the same machine or in the same datacenter for :ref:`location-aware load balancing <api-python-database-options>`.
* Removed from the client library debugging code included in versions up through Beta 2, leading to higher, more predictable performance.
* Improved data distribution algorithms to optimize data movement during failure scenarios.
* Improved range-read iterators in Node.js using lazy evaluation.
* Improved client-side range-read prefetching in Node.js, Ruby, and Python.
* Incrementally improved performance across all language bindings.
Fixes
-----
* A storage node could be prevented from rejoining the cluster until the process was restarted.
* A reverse ``GetRange`` request using a row limit and an end key selector that enters the system keyspace could return too few results.
* A machine power loss immediately following a process restart could result in an invalid transaction log.
* ``GetRange`` could improperly cache too large a range of data when the end key selector resolved past the end of user keyspace, temporarily resulting in incorrect answers to read requests.
* In Node.js, reusing a range iterator for a second request could result in an incomplete result set.
Earlier release notes
---------------------
* :doc:`Beta 2 (API Version 22) <release-notes-022>`
* :doc:`Beta 1 (API Version 21) <release-notes-023>`
* :doc:`Alpha 6 (API Version 16) <release-notes-016>`
* :doc:`Alpha 5 (API Version 14) <release-notes-014>`

View File

@ -1,55 +1,55 @@
###################
Release Notes (1.0)
###################
1.0.1
=====
* Fix segmentation fault in client when there are a very large number of dependent operations in a transaction and certain errors occur.
1.0.0
=====
After a year and a half of Alpha and Beta testing, FoundationDB is now commercially available. Thanks to the help of the thousands of Alpha and Beta testers in our community, we believe that this release is highly robust and capable.
You can now find pricing and order enterprise licenses online.
The new Community License now permits free-of-charge use for production systems with up to 6 server processes and for non-production systems with an unlimited number of processes.
There are only minor technical differences between this release and the 0.3.0 release of August 7, 2013:
Java
----
* ``clear(Range)`` replaces the now deprecated ``clearRangeStartsWith()``.
Python
------
* Windows installer supports Python 3.
Node and Ruby
-------------
* String option parameters are converted to UTF-8.
All
---
* API version changed to 100. Programs with lower versions continue to work.
* Runs on Mac OS X 10.7.
* Improvements to installation packages, including package paths and directory modes.
* Eliminated cases of excessive resource usage in the locality API.
* Watches are disabled when read-your-writes functionality is disabled.
* Fatal error paths now call ``_exit()`` instead instead of ``exit()``.
Fixes
-----
* A few Python API entry points failed to respect the ``as_foundationdb_key()`` convenience interface.
* ``fdbcli`` could print commit version numbers incorrectly in Windows.
* Multiple watches set on the same key were not correctly triggered by a subsequent write in the same transaction.
Earlier release notes
---------------------
* :doc:`Beta 3 (API Version 23) <release-notes-023>`
* :doc:`Beta 2 (API Version 22) <release-notes-022>`
* :doc:`Beta 1 (API Version 21) <release-notes-021>`
* :doc:`Alpha 6 (API Version 16) <release-notes-016>`
* :doc:`Alpha 5 (API Version 14) <release-notes-014>`
###################
Release Notes (1.0)
###################
1.0.1
=====
* Fix segmentation fault in client when there are a very large number of dependent operations in a transaction and certain errors occur.
1.0.0
=====
After a year and a half of Alpha and Beta testing, FoundationDB is now commercially available. Thanks to the help of the thousands of Alpha and Beta testers in our community, we believe that this release is highly robust and capable.
You can now find pricing and order enterprise licenses online.
The new Community License now permits free-of-charge use for production systems with up to 6 server processes and for non-production systems with an unlimited number of processes.
There are only minor technical differences between this release and the 0.3.0 release of August 7, 2013:
Java
----
* ``clear(Range)`` replaces the now deprecated ``clearRangeStartsWith()``.
Python
------
* Windows installer supports Python 3.
Node and Ruby
-------------
* String option parameters are converted to UTF-8.
All
---
* API version changed to 100. Programs with lower versions continue to work.
* Runs on Mac OS X 10.7.
* Improvements to installation packages, including package paths and directory modes.
* Eliminated cases of excessive resource usage in the locality API.
* Watches are disabled when read-your-writes functionality is disabled.
* Fatal error paths now call ``_exit()`` instead instead of ``exit()``.
Fixes
-----
* A few Python API entry points failed to respect the ``as_foundationdb_key()`` convenience interface.
* ``fdbcli`` could print commit version numbers incorrectly in Windows.
* Multiple watches set on the same key were not correctly triggered by a subsequent write in the same transaction.
Earlier release notes
---------------------
* :doc:`Beta 3 (API Version 23) <release-notes-023>`
* :doc:`Beta 2 (API Version 22) <release-notes-022>`
* :doc:`Beta 1 (API Version 21) <release-notes-021>`
* :doc:`Alpha 6 (API Version 16) <release-notes-016>`
* :doc:`Alpha 5 (API Version 14) <release-notes-014>`

View File

@ -1,194 +1,194 @@
###################
Release Notes (3.0)
###################
3.0.8
=====
Release 3.0.8 is protocol-compatible with all prior 3.0.x releases. All users should continue to employ the bindings released with 3.0.2, with the exception of the following:
* Node.js - updated to 3.0.6
* Ruby - updated to 3.0.7
* Java - updated to 3.0.8
Fixes
-----
* Backup: the backup agent could crash in some circumstances, preventing a backup from completing.
* Linux: On some systems, disk space usage tracking could be inaccurate.
* In rare cases, range reading could get stuck in an infinite past_version loop.
* Range reading with a begin key selector that resolved to the end of the database might not set the correct conflict range.
Java
----
* Fix: getBoundaryKeys could throw a NullPointerException.
3.0.7
=====
Release 3.0.7 is protocol-compatible with all prior 3.0.x releases. All users should continue to employ the bindings released with 3.0.2, with the exception of the following:
* Node.js - updated to 3.0.6
* Ruby - updated to 3.0.7
Fixes
-----
* ``fdbcli`` would segmentation fault if there was a semicolon after a quoted string.
* :ref:`Atomic operations <api-python-transaction-atomic-operations>` performed on keys that had been :ref:`snapshot read <api-python-snapshot-reads>` would be converted into a set operation.
* Reading a key to which an atomic operation had already been applied would cause the read to behave as a snapshot read.
* In rare scenarios, it was possible for the memory holding the result of a read to be released when a transaction was reset.
* If available RAM was negative, it was reported as a very large number in status.
Ruby
----
* Fix: ``FDB`` objects could not be garbage collected.
3.0.6
=====
Release 3.0.6 is protocol-compatible with all prior 3.0.x releases. All users should continue to employ the bindings released with 3.0.2, with the exception of the following:
* Node.js - updated to 3.0.6
Fixes
-----
* Read-latency probes for status incorrectly returned zero.
* Commit-latency probe for status included the time to acquire its read version.
* Client and server could crash when experiencing problems with network connections.
Node.js
-------
* Fix: npm source package did not compile on Mac OS X 10.9 or newer.
Windows
-------
* Added registry key during installation.
3.0.5
=====
Release 3.0.5 is protocol-compatible with all prior 3.0.x releases. This release contains only a bug fix for Windows packages; Linux and Mac OS X packages for 3.0.5 are identical to those for 3.0.4. All users should continue to employ the bindings released with 3.0.2, with the exception of the following:
* Node.js - updated to 3.0.3 if downloaded from ``npm``.
Fixes
-----
* Windows: fix Visual Studio 2013 code generation bug on older processors or versions of Windows that don't support the AVX instruction set (see https://connect.microsoft.com/VisualStudio/feedback/details/811093).
3.0.4
=====
Release 3.0.4 is protocol-compatible with all prior 3.0.x releases. Users should continue to employ the bindings released with 3.0.2, with the exception of the following:
* Node.js - updated to 3.0.3 if downloaded from ``npm``.
Fixes
-----
* Mac OS X: backup agent used 100% CPU even when idle.
* Backups were inoperative on databases with greater than 32-bit versions.
* Backup agents were not started on Windows.
* Restore required write permissions on files.
* The backup client did not report errors properly in all scenarios.
* ``fdbserver -v`` did not print the version.
Node.js
-------
* Fixed a compilation problem on Linux and Mac OS X as distributed on ``npm``. (Note: The corrected binding is distributed as version 3.0.3.)
3.0.2
=====
Upgrades
--------
* When upgrading from version 2.0.x to 3.0.x, you should consult :ref:`Upgrading to 3.0 <upgrading-from-older-versions>`.
Features
--------
* Status information provided in :doc:`machine-readable JSON </mr-status>` form.
* Differential backups and backup of selective keyspaces added to :ref:`backup tool <backup-wait>`.
* Clients may retrieve :ref:`machine-readable status <mr-status-key>`, :ref:`cluster filepath, and cluster file contents <cluster-file-client-access>` by reading designated system keys from the database.
* Two new :ref:`atomic operations <api-python-transaction-atomic-operations>`: max and min.
Performance
-----------
* Increased maximum writes per second from 200,000 to 11,000,000.
* Improved latencies, particularly on underutilized clusters.
* Improved performance of backup and restore.
* Improved client CPU usage.
* Better rate-limiting when committing very large transactions.
* Improved performance while servers rejoin the cluster.
Fixes
-----
* B-tree vacuuming could exhibit poor performance after large deletions of data.
* Computation of memory availability was not correct on newer Linux versions.
* Integers could overflow when setting range limits.
* With the memory storage engine, a key could be lost after multiple reboots in quick succession.
Client
------
* Support for API version 300 and backwards compatible with previous API versions.
* By default, :ref:`snapshot reads <snapshot isolation>` see writes within the same transaction. The previous behavior can be achieved using transaction options.
* The :ref:`transaction size limit <large-transactions>` includes conflict ranges.
* Explicitly added read or write :ref:`conflict ranges <api-python-conflict-ranges>` and :ref:`watches <api-python-watches>` for keys that begin with ``\xFF`` require one of the transaction options ``access_system_keys`` or ``read_system_keys`` to be set.
* New network options for ``trace_max_logs_size`` and ``trace_roll_size`` for an individual client's trace files.
* New transaction options: max_retry_delay, read_system_keys.
* All errors cause :ref:`watches <api-python-watches>` to trigger.
* All errors cause a transaction to reset (previously true only of some errors).
Java
----
* ``ReadTransactionContext`` added next to ``TransactionContext``, allowing ``read()`` and ``readAsync()`` composable read-only operations on transactions.
* The ``Future`` interface adds ``getInterruptibly()`` and ``blockInterruptibly()``, which propagate ``InterruptedExcetption`` to the calling code.
* Exception-handling logic is reworked in ``map()``, ``flatMap()``, and ``rescue()`` to propagate ``OutOfMemoryError`` and ``RejectedExecutionException`` instead of the spurious ``SettableAlreadySet`` exception.
* Performance is improved for applications that use many blocking-style ``get()`` calls.
Node.js
-------
* Fix: ``fdb.open``, ``fdb.createCluster``, and ``cluster.openDatabase`` didn't use the callback in API versions 22 or lower.
* Tuple performance is improved.
PHP
---
* Snapshot reads have a ``transact`` function.
Python
------
* Bindings work in Cygwin.
* The :ref:`transactional decorator <api-python-transactional-decorator>` no longer warns of a transaction approaching the 5 second limit.
Ruby
----
* Fix: ``db.get``, ``get_key``, and ``get_and_watch`` returned Futures instead of actual values.
Other changes
-------------
* Versions increase by 1 million per second instead of 1 thousand per second.
* Removed support for Ubuntu 11.10.
* Python binding has been removed from Linux packages.
* In ``fdbcli``, ``getrange`` does a prefix range read if no end key is specified.
* In ``fdbcli``, added an option to disable the initial status check.
Note on version numbers
-----------------------
Version 3.0.2 is the first publicly released version in the 3.0.x series. Versions 3.0.0-1 were limited-availability releases with the same feature set.
Earlier release notes
---------------------
* :doc:`2.0 (API Version 200) <release-notes-200>`
* :doc:`1.0 (API Version 100) <release-notes-100>`
* :doc:`Beta 3 (API Version 23) <release-notes-023>`
* :doc:`Beta 2 (API Version 22) <release-notes-022>`
* :doc:`Beta 1 (API Version 21) <release-notes-021>`
* :doc:`Alpha 6 (API Version 16) <release-notes-016>`
* :doc:`Alpha 5 (API Version 14) <release-notes-014>`
###################
Release Notes (3.0)
###################
3.0.8
=====
Release 3.0.8 is protocol-compatible with all prior 3.0.x releases. All users should continue to employ the bindings released with 3.0.2, with the exception of the following:
* Node.js - updated to 3.0.6
* Ruby - updated to 3.0.7
* Java - updated to 3.0.8
Fixes
-----
* Backup: the backup agent could crash in some circumstances, preventing a backup from completing.
* Linux: On some systems, disk space usage tracking could be inaccurate.
* In rare cases, range reading could get stuck in an infinite past_version loop.
* Range reading with a begin key selector that resolved to the end of the database might not set the correct conflict range.
Java
----
* Fix: getBoundaryKeys could throw a NullPointerException.
3.0.7
=====
Release 3.0.7 is protocol-compatible with all prior 3.0.x releases. All users should continue to employ the bindings released with 3.0.2, with the exception of the following:
* Node.js - updated to 3.0.6
* Ruby - updated to 3.0.7
Fixes
-----
* ``fdbcli`` would segmentation fault if there was a semicolon after a quoted string.
* :ref:`Atomic operations <api-python-transaction-atomic-operations>` performed on keys that had been :ref:`snapshot read <api-python-snapshot-reads>` would be converted into a set operation.
* Reading a key to which an atomic operation had already been applied would cause the read to behave as a snapshot read.
* In rare scenarios, it was possible for the memory holding the result of a read to be released when a transaction was reset.
* If available RAM was negative, it was reported as a very large number in status.
Ruby
----
* Fix: ``FDB`` objects could not be garbage collected.
3.0.6
=====
Release 3.0.6 is protocol-compatible with all prior 3.0.x releases. All users should continue to employ the bindings released with 3.0.2, with the exception of the following:
* Node.js - updated to 3.0.6
Fixes
-----
* Read-latency probes for status incorrectly returned zero.
* Commit-latency probe for status included the time to acquire its read version.
* Client and server could crash when experiencing problems with network connections.
Node.js
-------
* Fix: npm source package did not compile on Mac OS X 10.9 or newer.
Windows
-------
* Added registry key during installation.
3.0.5
=====
Release 3.0.5 is protocol-compatible with all prior 3.0.x releases. This release contains only a bug fix for Windows packages; Linux and Mac OS X packages for 3.0.5 are identical to those for 3.0.4. All users should continue to employ the bindings released with 3.0.2, with the exception of the following:
* Node.js - updated to 3.0.3 if downloaded from ``npm``.
Fixes
-----
* Windows: fix Visual Studio 2013 code generation bug on older processors or versions of Windows that don't support the AVX instruction set (see https://connect.microsoft.com/VisualStudio/feedback/details/811093).
3.0.4
=====
Release 3.0.4 is protocol-compatible with all prior 3.0.x releases. Users should continue to employ the bindings released with 3.0.2, with the exception of the following:
* Node.js - updated to 3.0.3 if downloaded from ``npm``.
Fixes
-----
* Mac OS X: backup agent used 100% CPU even when idle.
* Backups were inoperative on databases with greater than 32-bit versions.
* Backup agents were not started on Windows.
* Restore required write permissions on files.
* The backup client did not report errors properly in all scenarios.
* ``fdbserver -v`` did not print the version.
Node.js
-------
* Fixed a compilation problem on Linux and Mac OS X as distributed on ``npm``. (Note: The corrected binding is distributed as version 3.0.3.)
3.0.2
=====
Upgrades
--------
* When upgrading from version 2.0.x to 3.0.x, you should consult :ref:`Upgrading to 3.0 <upgrading-from-older-versions>`.
Features
--------
* Status information provided in :doc:`machine-readable JSON </mr-status>` form.
* Differential backups and backup of selective keyspaces added to :ref:`backup tool <backup-wait>`.
* Clients may retrieve :ref:`machine-readable status <mr-status-key>`, :ref:`cluster filepath, and cluster file contents <cluster-file-client-access>` by reading designated system keys from the database.
* Two new :ref:`atomic operations <api-python-transaction-atomic-operations>`: max and min.
Performance
-----------
* Increased maximum writes per second from 200,000 to 11,000,000.
* Improved latencies, particularly on underutilized clusters.
* Improved performance of backup and restore.
* Improved client CPU usage.
* Better rate-limiting when committing very large transactions.
* Improved performance while servers rejoin the cluster.
Fixes
-----
* B-tree vacuuming could exhibit poor performance after large deletions of data.
* Computation of memory availability was not correct on newer Linux versions.
* Integers could overflow when setting range limits.
* With the memory storage engine, a key could be lost after multiple reboots in quick succession.
Client
------
* Support for API version 300 and backwards compatible with previous API versions.
* By default, :ref:`snapshot reads <snapshot isolation>` see writes within the same transaction. The previous behavior can be achieved using transaction options.
* The :ref:`transaction size limit <large-transactions>` includes conflict ranges.
* Explicitly added read or write :ref:`conflict ranges <api-python-conflict-ranges>` and :ref:`watches <api-python-watches>` for keys that begin with ``\xFF`` require one of the transaction options ``access_system_keys`` or ``read_system_keys`` to be set.
* New network options for ``trace_max_logs_size`` and ``trace_roll_size`` for an individual client's trace files.
* New transaction options: max_retry_delay, read_system_keys.
* All errors cause :ref:`watches <api-python-watches>` to trigger.
* All errors cause a transaction to reset (previously true only of some errors).
Java
----
* ``ReadTransactionContext`` added next to ``TransactionContext``, allowing ``read()`` and ``readAsync()`` composable read-only operations on transactions.
* The ``Future`` interface adds ``getInterruptibly()`` and ``blockInterruptibly()``, which propagate ``InterruptedExcetption`` to the calling code.
* Exception-handling logic is reworked in ``map()``, ``flatMap()``, and ``rescue()`` to propagate ``OutOfMemoryError`` and ``RejectedExecutionException`` instead of the spurious ``SettableAlreadySet`` exception.
* Performance is improved for applications that use many blocking-style ``get()`` calls.
Node.js
-------
* Fix: ``fdb.open``, ``fdb.createCluster``, and ``cluster.openDatabase`` didn't use the callback in API versions 22 or lower.
* Tuple performance is improved.
PHP
---
* Snapshot reads have a ``transact`` function.
Python
------
* Bindings work in Cygwin.
* The :ref:`transactional decorator <api-python-transactional-decorator>` no longer warns of a transaction approaching the 5 second limit.
Ruby
----
* Fix: ``db.get``, ``get_key``, and ``get_and_watch`` returned Futures instead of actual values.
Other changes
-------------
* Versions increase by 1 million per second instead of 1 thousand per second.
* Removed support for Ubuntu 11.10.
* Python binding has been removed from Linux packages.
* In ``fdbcli``, ``getrange`` does a prefix range read if no end key is specified.
* In ``fdbcli``, added an option to disable the initial status check.
Note on version numbers
-----------------------
Version 3.0.2 is the first publicly released version in the 3.0.x series. Versions 3.0.0-1 were limited-availability releases with the same feature set.
Earlier release notes
---------------------
* :doc:`2.0 (API Version 200) <release-notes-200>`
* :doc:`1.0 (API Version 100) <release-notes-100>`
* :doc:`Beta 3 (API Version 23) <release-notes-023>`
* :doc:`Beta 2 (API Version 22) <release-notes-022>`
* :doc:`Beta 1 (API Version 21) <release-notes-021>`
* :doc:`Alpha 6 (API Version 16) <release-notes-016>`
* :doc:`Alpha 5 (API Version 14) <release-notes-014>`

View File

@ -1,69 +1,69 @@
###################
Release Notes (4.0)
###################
4.0.2
=====
Fixes
-----
* Streaming mode ``EXACT`` was ignoring the ``target_bytes`` parameter.
Java
----
* Added a ``toString`` method to the Tuple class.
4.0.1
=====
Fdbcli
------
* Added a "configure auto" command which will recommend a setting for proxies and logs (not resolvers) along with machine class changes.
* Added a "setclass" command which can change a processes machine class from the cli.
Performance
-----------
* Improved the recovery speed of the transaction subsystem.
* Improved the stability of the transaction rate under saturating workloads.
* Made the transaction log more memory efficient.
Features
--------
* Added support for Versionstamp atomic operations.
Fixes
-----
* It was not safe to allocate multiple directories concurrently in the same transaction in the directory layer.
Java
----
* Changed the package for the Java bindings from com.foundationdb to com.apple.cie.foundationdb.
Python
------
* Tuple support for integers up to 255 bytes.
Other changes
-------------
* Added detailed metric logging available through Scope.
* An optional configuration parameter has been added that allows you to specify a seed cluster file.
Earlier release notes
---------------------
* :doc:`3.0 (API Version 300) <release-notes-300>`
* :doc:`2.0 (API Version 200) <release-notes-200>`
* :doc:`1.0 (API Version 100) <release-notes-100>`
* :doc:`Beta 3 (API Version 23) <release-notes-023>`
* :doc:`Beta 2 (API Version 22) <release-notes-022>`
* :doc:`Beta 1 (API Version 21) <release-notes-021>`
* :doc:`Alpha 6 (API Version 16) <release-notes-016>`
* :doc:`Alpha 5 (API Version 14) <release-notes-014>`
###################
Release Notes (4.0)
###################
4.0.2
=====
Fixes
-----
* Streaming mode ``EXACT`` was ignoring the ``target_bytes`` parameter.
Java
----
* Added a ``toString`` method to the Tuple class.
4.0.1
=====
Fdbcli
------
* Added a "configure auto" command which will recommend a setting for proxies and logs (not resolvers) along with machine class changes.
* Added a "setclass" command which can change a processes machine class from the cli.
Performance
-----------
* Improved the recovery speed of the transaction subsystem.
* Improved the stability of the transaction rate under saturating workloads.
* Made the transaction log more memory efficient.
Features
--------
* Added support for Versionstamp atomic operations.
Fixes
-----
* It was not safe to allocate multiple directories concurrently in the same transaction in the directory layer.
Java
----
* Changed the package for the Java bindings from com.foundationdb to com.apple.cie.foundationdb.
Python
------
* Tuple support for integers up to 255 bytes.
Other changes
-------------
* Added detailed metric logging available through Scope.
* An optional configuration parameter has been added that allows you to specify a seed cluster file.
Earlier release notes
---------------------
* :doc:`3.0 (API Version 300) <release-notes-300>`
* :doc:`2.0 (API Version 200) <release-notes-200>`
* :doc:`1.0 (API Version 100) <release-notes-100>`
* :doc:`Beta 3 (API Version 23) <release-notes-023>`
* :doc:`Beta 2 (API Version 22) <release-notes-022>`
* :doc:`Beta 1 (API Version 21) <release-notes-021>`
* :doc:`Alpha 6 (API Version 16) <release-notes-016>`
* :doc:`Alpha 5 (API Version 14) <release-notes-014>`

View File

@ -1,53 +1,53 @@
###################
Release Notes (4.1)
###################
4.1.1
=====
Fixes
-----
* Many short-lived file access metrics were being created.
* A completed backup could be improperly marked as incomplete.
* In rare scenarios the resolvers could fail to make progress.
4.1.0
=====
Performance
-----------
* Significantly improved cluster performance in a wide variety of machine failure scenarios.
Features
--------
* Clients can now load multiple versions of the client library, and will gracefully switch to the appropriate version when the server is upgraded.
* A new operating mode for ``fdbbackup`` writes backup data files into the blob store.
* Transactions no longer automatically reset after a successful commit.
* Added ability to set network options with environment variables.
* Added a new API function for determining the value to which atomic versionstamp operations in a transaction were transformed or would have been transformed.
* Improved logic for integrating manually-assigned machine classes with other constraints on role locations.
* Added a new machine class ``stateless`` which is the top priority location for resolvers, proxies, and masters.
* Added a new machine class ``log`` which is the top priority location for transaction logs.
* Trace events are now event metrics that are exposed in Scope.
Fixes
-----
* A log could attempt to recover from a partially recovered set of logs when fast recovery was enabled.
* A rare scenario could cause a crash when a master is recovering metadata from the previous generation of logs.
* Streaming mode ``EXACT`` was ignoring the ``target_bytes`` parameter.
Earlier release notes
---------------------
* :doc:`4.0 (API Version 400) <release-notes-400>`
* :doc:`3.0 (API Version 300) <release-notes-300>`
* :doc:`2.0 (API Version 200) <release-notes-200>`
* :doc:`1.0 (API Version 100) <release-notes-100>`
* :doc:`Beta 3 (API Version 23) <release-notes-023>`
* :doc:`Beta 2 (API Version 22) <release-notes-022>`
* :doc:`Beta 1 (API Version 21) <release-notes-021>`
* :doc:`Alpha 6 (API Version 16) <release-notes-016>`
* :doc:`Alpha 5 (API Version 14) <release-notes-014>`
###################
Release Notes (4.1)
###################
4.1.1
=====
Fixes
-----
* Many short-lived file access metrics were being created.
* A completed backup could be improperly marked as incomplete.
* In rare scenarios the resolvers could fail to make progress.
4.1.0
=====
Performance
-----------
* Significantly improved cluster performance in a wide variety of machine failure scenarios.
Features
--------
* Clients can now load multiple versions of the client library, and will gracefully switch to the appropriate version when the server is upgraded.
* A new operating mode for ``fdbbackup`` writes backup data files into the blob store.
* Transactions no longer automatically reset after a successful commit.
* Added ability to set network options with environment variables.
* Added a new API function for determining the value to which atomic versionstamp operations in a transaction were transformed or would have been transformed.
* Improved logic for integrating manually-assigned machine classes with other constraints on role locations.
* Added a new machine class ``stateless`` which is the top priority location for resolvers, proxies, and masters.
* Added a new machine class ``log`` which is the top priority location for transaction logs.
* Trace events are now event metrics that are exposed in Scope.
Fixes
-----
* A log could attempt to recover from a partially recovered set of logs when fast recovery was enabled.
* A rare scenario could cause a crash when a master is recovering metadata from the previous generation of logs.
* Streaming mode ``EXACT`` was ignoring the ``target_bytes`` parameter.
Earlier release notes
---------------------
* :doc:`4.0 (API Version 400) <release-notes-400>`
* :doc:`3.0 (API Version 300) <release-notes-300>`
* :doc:`2.0 (API Version 200) <release-notes-200>`
* :doc:`1.0 (API Version 100) <release-notes-100>`
* :doc:`Beta 3 (API Version 23) <release-notes-023>`
* :doc:`Beta 2 (API Version 22) <release-notes-022>`
* :doc:`Beta 1 (API Version 21) <release-notes-021>`
* :doc:`Alpha 6 (API Version 16) <release-notes-016>`
* :doc:`Alpha 5 (API Version 14) <release-notes-014>`

View File

@ -1,35 +1,35 @@
###################
Release Notes (4.2)
###################
4.2.1
=====
Fixes
-----
* The Java bindings had an incorrectly named native extension on Linux.
4.2.0
=====
Features
--------
* A new utility allows :doc:`Backups </backups>` of a cluster directly into another FoundationDB database. It is designed also to support asynchronous replication and disaster recovery.
* A new version of the `Java bindings <../javadoc-completable/index.html>`_ adds support for Java 8 Completable Futures.
* Information on the versions of connected clients has been added to :doc:`Machine-Readable Status </mr-status>`.
* Information on the status of running backups has been added to :doc:`Machine-Readable Status </mr-status>`.
Earlier release notes
---------------------
* :doc:`4.1 (API Version 410) <release-notes-410>`
* :doc:`4.0 (API Version 400) <release-notes-400>`
* :doc:`3.0 (API Version 300) <release-notes-300>`
* :doc:`2.0 (API Version 200) <release-notes-200>`
* :doc:`1.0 (API Version 100) <release-notes-100>`
* :doc:`Beta 3 (API Version 23) <release-notes-023>`
* :doc:`Beta 2 (API Version 22) <release-notes-022>`
* :doc:`Beta 1 (API Version 21) <release-notes-021>`
* :doc:`Alpha 6 (API Version 16) <release-notes-016>`
* :doc:`Alpha 5 (API Version 14) <release-notes-014>`
###################
Release Notes (4.2)
###################
4.2.1
=====
Fixes
-----
* The Java bindings had an incorrectly named native extension on Linux.
4.2.0
=====
Features
--------
* A new utility allows :doc:`Backups </backups>` of a cluster directly into another FoundationDB database. It is designed also to support asynchronous replication and disaster recovery.
* A new version of the `Java bindings <../javadoc-completable/index.html>`_ adds support for Java 8 Completable Futures.
* Information on the versions of connected clients has been added to :doc:`Machine-Readable Status </mr-status>`.
* Information on the status of running backups has been added to :doc:`Machine-Readable Status </mr-status>`.
Earlier release notes
---------------------
* :doc:`4.1 (API Version 410) <release-notes-410>`
* :doc:`4.0 (API Version 400) <release-notes-400>`
* :doc:`3.0 (API Version 300) <release-notes-300>`
* :doc:`2.0 (API Version 200) <release-notes-200>`
* :doc:`1.0 (API Version 100) <release-notes-100>`
* :doc:`Beta 3 (API Version 23) <release-notes-023>`
* :doc:`Beta 2 (API Version 22) <release-notes-022>`
* :doc:`Beta 1 (API Version 21) <release-notes-021>`
* :doc:`Alpha 6 (API Version 16) <release-notes-016>`
* :doc:`Alpha 5 (API Version 14) <release-notes-014>`

View File

@ -1,37 +1,37 @@
###################
Release Notes (4.3)
###################
4.3.0
=====
Features
--------
* Improved DR thoughput by having mutations copied into the DR database before applying them.
* Renamed db_agent to dr_agent.
* Added more detailed DR and backup active task detail into layer status.
Fixes
-----
* Backup seconds behind did not update in continuous mode.
* DR layer status did not report correctly.
* The Java bindings had an incorrectly named native extension on Linux.
* DR status would crash if called before a DR had been started.
* Changed the blob restore read pattern to work around blob store issues.
* External clients do not load environment variable options.
Earlier release notes
---------------------
* :doc:`4.2 (API Version 420) <release-notes-420>`
* :doc:`4.1 (API Version 410) <release-notes-410>`
* :doc:`4.0 (API Version 400) <release-notes-400>`
* :doc:`3.0 (API Version 300) <release-notes-300>`
* :doc:`2.0 (API Version 200) <release-notes-200>`
* :doc:`1.0 (API Version 100) <release-notes-100>`
* :doc:`Beta 3 (API Version 23) <release-notes-023>`
* :doc:`Beta 2 (API Version 22) <release-notes-022>`
* :doc:`Beta 1 (API Version 21) <release-notes-021>`
* :doc:`Alpha 6 (API Version 16) <release-notes-016>`
* :doc:`Alpha 5 (API Version 14) <release-notes-014>`
###################
Release Notes (4.3)
###################
4.3.0
=====
Features
--------
* Improved DR thoughput by having mutations copied into the DR database before applying them.
* Renamed db_agent to dr_agent.
* Added more detailed DR and backup active task detail into layer status.
Fixes
-----
* Backup seconds behind did not update in continuous mode.
* DR layer status did not report correctly.
* The Java bindings had an incorrectly named native extension on Linux.
* DR status would crash if called before a DR had been started.
* Changed the blob restore read pattern to work around blob store issues.
* External clients do not load environment variable options.
Earlier release notes
---------------------
* :doc:`4.2 (API Version 420) <release-notes-420>`
* :doc:`4.1 (API Version 410) <release-notes-410>`
* :doc:`4.0 (API Version 400) <release-notes-400>`
* :doc:`3.0 (API Version 300) <release-notes-300>`
* :doc:`2.0 (API Version 200) <release-notes-200>`
* :doc:`1.0 (API Version 100) <release-notes-100>`
* :doc:`Beta 3 (API Version 23) <release-notes-023>`
* :doc:`Beta 2 (API Version 22) <release-notes-022>`
* :doc:`Beta 1 (API Version 21) <release-notes-021>`
* :doc:`Alpha 6 (API Version 16) <release-notes-016>`
* :doc:`Alpha 5 (API Version 14) <release-notes-014>`

View File

@ -1,73 +1,73 @@
###################
Release Notes (4.4)
###################
4.4.2
=====
Features
--------
* Backup's minimum unit of progress is now a single committed version, allowing progress to be made when the database is very unhealthy.
Fixes
--------
* Options being disabled in fdbcli required an unnecessary parameter.
* In rare situations, an incorrect backup index could be written. Contact us if you need to restore data from a v4.4.1 or earlier backup.
* A crash could occur on startup in fdbbackup and fdbcli.
* A data corruption bug observed on OS X was fixed. The issue has never been observed on other platforms.
4.4.1
=====
Features
--------
* Added support for streaming writes. This allows a client to load an ordered list of mutations into the database in parallel, and once they are all loaded, the mutations will be applied to the database in order.
* DR uses streaming writes to significantly improve throughput.
* Restore was rewritten so that many clients can partipate in restoring data, significantly improving restore speed. The command line restore tool interface has been updated to support this new capability.
* Cluster files now support comments (using the '#' character).
* A wide variety of new client-side statistics are logged in client trace files every 5 seconds.
* Status reports the generation of the system. The generation is incremented every time there is a failure (and recovery) in the transaction subsystem.
* Added a new machine-wide identification token. This token is used in place of the user-supplied "machine ID" in instances where true physical machine is the unit of interest. This change will allow for reporting tools to output the actual number of physical machines present in a cluster.
* Added per-process metrics for total disk capacity and free space to status json output that allow for more repeatable and expected reporting of host disk usage. These metrics are based on the "data-dir" parameter to fdbserver and will be reported without regard to whether the process is using the disk or not.
* Added backup size estimates to status json output.
* Added process uptime seconds to status json output.
* Added a flag indicating whether the database is locked to status json output.
Fixes
-----
* Only processes which can become logs are counted towards fault tolerance.
* A long running process would have a local estimate of time which differed greatly from system clock of the machine the process was running on.
* DR errors were not being reported properly in DR status.
* Backup and DR layer status expiration and cleanup now use database read version instead of time. <rdar://problem/24805824>
Java
----
* The `ReadTransaction` interface supports the ability to set transaction options.
Other Changes
-------------
* Removed support for the old log system (pre 3.0). To upgrade to 4.4+ from a version before 3.0, first upgrade to a version between 3.0 and 4.3.
* Removed trace event spam in backup and DR.
* Backup and DR only report the most recent error, rather than a list of errors.
* Updated language binding 'API version not supported' error message to include the version requested and supported. <rdar://problem/23769929>
Earlier release notes
---------------------
* :doc:`4.3 (API Version 430) <release-notes-430>`
* :doc:`4.2 (API Version 420) <release-notes-420>`
* :doc:`4.1 (API Version 410) <release-notes-410>`
* :doc:`4.0 (API Version 400) <release-notes-400>`
* :doc:`3.0 (API Version 300) <release-notes-300>`
* :doc:`2.0 (API Version 200) <release-notes-200>`
* :doc:`1.0 (API Version 100) <release-notes-100>`
* :doc:`Beta 3 (API Version 23) <release-notes-023>`
* :doc:`Beta 2 (API Version 22) <release-notes-022>`
* :doc:`Beta 1 (API Version 21) <release-notes-021>`
* :doc:`Alpha 6 (API Version 16) <release-notes-016>`
* :doc:`Alpha 5 (API Version 14) <release-notes-014>`
###################
Release Notes (4.4)
###################
4.4.2
=====
Features
--------
* Backup's minimum unit of progress is now a single committed version, allowing progress to be made when the database is very unhealthy.
Fixes
--------
* Options being disabled in fdbcli required an unnecessary parameter.
* In rare situations, an incorrect backup index could be written. Contact us if you need to restore data from a v4.4.1 or earlier backup.
* A crash could occur on startup in fdbbackup and fdbcli.
* A data corruption bug observed on OS X was fixed. The issue has never been observed on other platforms.
4.4.1
=====
Features
--------
* Added support for streaming writes. This allows a client to load an ordered list of mutations into the database in parallel, and once they are all loaded, the mutations will be applied to the database in order.
* DR uses streaming writes to significantly improve throughput.
* Restore was rewritten so that many clients can partipate in restoring data, significantly improving restore speed. The command line restore tool interface has been updated to support this new capability.
* Cluster files now support comments (using the '#' character).
* A wide variety of new client-side statistics are logged in client trace files every 5 seconds.
* Status reports the generation of the system. The generation is incremented every time there is a failure (and recovery) in the transaction subsystem.
* Added a new machine-wide identification token. This token is used in place of the user-supplied "machine ID" in instances where true physical machine is the unit of interest. This change will allow for reporting tools to output the actual number of physical machines present in a cluster.
* Added per-process metrics for total disk capacity and free space to status json output that allow for more repeatable and expected reporting of host disk usage. These metrics are based on the "data-dir" parameter to fdbserver and will be reported without regard to whether the process is using the disk or not.
* Added backup size estimates to status json output.
* Added process uptime seconds to status json output.
* Added a flag indicating whether the database is locked to status json output.
Fixes
-----
* Only processes which can become logs are counted towards fault tolerance.
* A long running process would have a local estimate of time which differed greatly from system clock of the machine the process was running on.
* DR errors were not being reported properly in DR status.
* Backup and DR layer status expiration and cleanup now use database read version instead of time. <rdar://problem/24805824>
Java
----
* The `ReadTransaction` interface supports the ability to set transaction options.
Other Changes
-------------
* Removed support for the old log system (pre 3.0). To upgrade to 4.4+ from a version before 3.0, first upgrade to a version between 3.0 and 4.3.
* Removed trace event spam in backup and DR.
* Backup and DR only report the most recent error, rather than a list of errors.
* Updated language binding 'API version not supported' error message to include the version requested and supported. <rdar://problem/23769929>
Earlier release notes
---------------------
* :doc:`4.3 (API Version 430) <release-notes-430>`
* :doc:`4.2 (API Version 420) <release-notes-420>`
* :doc:`4.1 (API Version 410) <release-notes-410>`
* :doc:`4.0 (API Version 400) <release-notes-400>`
* :doc:`3.0 (API Version 300) <release-notes-300>`
* :doc:`2.0 (API Version 200) <release-notes-200>`
* :doc:`1.0 (API Version 100) <release-notes-100>`
* :doc:`Beta 3 (API Version 23) <release-notes-023>`
* :doc:`Beta 2 (API Version 22) <release-notes-022>`
* :doc:`Beta 1 (API Version 21) <release-notes-021>`
* :doc:`Alpha 6 (API Version 16) <release-notes-016>`
* :doc:`Alpha 5 (API Version 14) <release-notes-014>`

View File

@ -1,143 +1,143 @@
###################
Release Notes (4.5)
###################
4.5.6
=====
Fixes
-----
* Disabled debug SevError trace event when applyMutations is cancelled
* Fixed problem skipping publishable files
* Publish debug symbols for files for all platforms
4.5.5
=====
Fixes
-----
* DR and backup restoration could stall when encountering transactions larger than 5 MB. <rdar://problem/28744048>
* The ``_valid`` field in layer status was missing when the client couldn't communicate with the cluster. <rdar://problem/27643333>
* Backup uploads to blobstore were not verifying their checksums. <rdar://problem/28417369>
4.5.4
=====
Fixes
-----
* Creating transactions with the multi-version client was not thread safe. <rdar://problem/28546688>
* The status latency probe is now performed separately from other status gathering code. <rdar://problem/28119480>
* Watches could fire early needlessly and in rare cases may not fire when they should. <rdar://problem/27957628>
* Change the type of the ``query_queue_max`` attribute in status from an object to an integer. <rdar://problem/26709846>
* ``fdbserver`` arguments were not properly preserved in log output. <rdar://problem/28407513>
* Increase priority of getting read versions over commits on the master proxy.
* Java: Inserting a non-Long number into a Tuple and reading it back out threw a ClassCastException. <rdar://problem/28260594>
4.5.3
=====
Fdbcli
------
* Fix: key and value output did not escape the backslash ('\\') character. <rdar://problem/27832343>
* Spaces in key and value output are no longer escaped. <rdar://problem/27832343>
Java-completable
----------------
* Fix: Range queries with a limit could sometimes return fewer items than requested. <rdar://problem/27879470>
Status
------
* Fix: backup and DR ``range_bytes_written`` and ``mutation_log_bytes_written`` are reset when backup or DR is restarted. <rdar://problem/27640774>
* Added ``_valid`` and ``_error`` fields to layer status. <rdar://problem/27643333>
4.5.2
=====
Fixes
-----
* Fixed thread safety issues with backup and DR.
* Fixed a load balancing problem when a machine was already failed when a client starts.
* Golang: adding an explicit conflict key included the key immediately following in the conflict range.
4.5.1
=====
Features
--------
* When a process is added to a cluster, it will be given data at a much faster rate. <rdar://problem/24075759>
* Improved the speed at which the cluster reacts to a failed process.
Fixes
-----
* Calculating status in large databases could cause slow tasks. <rdar://problem/25805251>
* Fdbrestore printed an error when passed the ``--help`` flag. <rdar://problem/26126793>
* A multi-version API external client that was a duplicate could cause a crash at client shutdown. <rdar://problem/25838039>
* A multi-version API external client that failed to load would cause a crash at client shutdown. <rdar://problem/26611919>
* Status could report an incorrect database size in rare scenarios. <rdar://problem/25295683>
* Data distribution would stopped working (both exclude and new recruitment) if a call to commit on the storage server could hang indefinitely. <rdar://problem/26276166>
* ``fdbcli`` would quit on some commands that were not errors or continue after some real errors when run with ``--exec``. <rdar://problem/25755317>
* Trace files generated by clients using the multi-version API could have name collisions. <rdar://problem/25884486>
Fdbcli
------
* Client issues are now aggregated by name and have an addresses list. Status details prints a truncated view of these. <rdar://problem/23469072>
* Status json lists incompatible clients. <rdar://problem/24415680>
* Status json includes processes that couldn't be reached in the processes list. <rdar://problem/26703551>
* Exclude does not run if it will drop free space below 10%. This check can be bypassed by adding the word ``FORCE`` as a parameter. <rdar://problem/22922266>
* Added write mode, which must be turned on to set or clear keys. <rdar://problem/25779641>
* Added the ``kill`` command for killing processes.
Fdbmonitor
----------
* The restart logic for dead child processes now uses a backoff. <rdar://problem/26100711>
* Added option to remove WD40 environment variables. <rdar://problem/26100669>
* ``fdbmonitor`` will create the lockfile directory if it doesn't exist. <rdar://problem/26502883>
* Added support for monitoring symbolic link changes in the configuration file path. <rdar://problem/26100843>
* Added an option to disable killing of child processes when the configuration changes. <rdar://problem/26100939>
* Added support for larger process IDs. <rdar://problem/26350469>
Backup
------
* Blobstore URLs can now contain multiple IP addresses, separated by commas, over which to load balance requests. <rdar://problem/23095572>
Bindings
--------
* Add error predicate testing to client bindings. This new functionality should help complex use cases write correct transaction retry loops where dispatching on error classes is needed. <rdar://problem/24492860>
Other Changes
-------------
* Maximum shard size increased from 100MB to 500MB. <rdar://problem/21225031>
* Support backslash as an escape character for semicolons and backslashes when setting network options using environment variables. <rdar://problem/23902390>
* Add ``logGroup`` attribute to rolled trace events. <rdar://problem/25726509>
* Calling get range with a begin key == ``\xff\xff/worker_interfaces`` will return a list of serialized worker interfaces. Calling set with the key ``\xff\xff/reboot_worker`` and a value which is a serialized worker interface will reboot that process. <rdar://problem/26101019>
Earlier release notes
---------------------
* :doc:`4.4 (API Version 440) <release-notes-440>`
* :doc:`4.3 (API Version 430) <release-notes-430>`
* :doc:`4.2 (API Version 420) <release-notes-420>`
* :doc:`4.1 (API Version 410) <release-notes-410>`
* :doc:`4.0 (API Version 400) <release-notes-400>`
* :doc:`3.0 (API Version 300) <release-notes-300>`
* :doc:`2.0 (API Version 200) <release-notes-200>`
* :doc:`1.0 (API Version 100) <release-notes-100>`
* :doc:`Beta 3 (API Version 23) <release-notes-023>`
* :doc:`Beta 2 (API Version 22) <release-notes-022>`
* :doc:`Beta 1 (API Version 21) <release-notes-021>`
* :doc:`Alpha 6 (API Version 16) <release-notes-016>`
* :doc:`Alpha 5 (API Version 14) <release-notes-014>`
###################
Release Notes (4.5)
###################
4.5.6
=====
Fixes
-----
* Disabled debug SevError trace event when applyMutations is cancelled
* Fixed problem skipping publishable files
* Publish debug symbols for files for all platforms
4.5.5
=====
Fixes
-----
* DR and backup restoration could stall when encountering transactions larger than 5 MB. <rdar://problem/28744048>
* The ``_valid`` field in layer status was missing when the client couldn't communicate with the cluster. <rdar://problem/27643333>
* Backup uploads to blobstore were not verifying their checksums. <rdar://problem/28417369>
4.5.4
=====
Fixes
-----
* Creating transactions with the multi-version client was not thread safe. <rdar://problem/28546688>
* The status latency probe is now performed separately from other status gathering code. <rdar://problem/28119480>
* Watches could fire early needlessly and in rare cases may not fire when they should. <rdar://problem/27957628>
* Change the type of the ``query_queue_max`` attribute in status from an object to an integer. <rdar://problem/26709846>
* ``fdbserver`` arguments were not properly preserved in log output. <rdar://problem/28407513>
* Increase priority of getting read versions over commits on the master proxy.
* Java: Inserting a non-Long number into a Tuple and reading it back out threw a ClassCastException. <rdar://problem/28260594>
4.5.3
=====
Fdbcli
------
* Fix: key and value output did not escape the backslash ('\\') character. <rdar://problem/27832343>
* Spaces in key and value output are no longer escaped. <rdar://problem/27832343>
Java-completable
----------------
* Fix: Range queries with a limit could sometimes return fewer items than requested. <rdar://problem/27879470>
Status
------
* Fix: backup and DR ``range_bytes_written`` and ``mutation_log_bytes_written`` are reset when backup or DR is restarted. <rdar://problem/27640774>
* Added ``_valid`` and ``_error`` fields to layer status. <rdar://problem/27643333>
4.5.2
=====
Fixes
-----
* Fixed thread safety issues with backup and DR.
* Fixed a load balancing problem when a machine was already failed when a client starts.
* Golang: adding an explicit conflict key included the key immediately following in the conflict range.
4.5.1
=====
Features
--------
* When a process is added to a cluster, it will be given data at a much faster rate. <rdar://problem/24075759>
* Improved the speed at which the cluster reacts to a failed process.
Fixes
-----
* Calculating status in large databases could cause slow tasks. <rdar://problem/25805251>
* Fdbrestore printed an error when passed the ``--help`` flag. <rdar://problem/26126793>
* A multi-version API external client that was a duplicate could cause a crash at client shutdown. <rdar://problem/25838039>
* A multi-version API external client that failed to load would cause a crash at client shutdown. <rdar://problem/26611919>
* Status could report an incorrect database size in rare scenarios. <rdar://problem/25295683>
* Data distribution would stopped working (both exclude and new recruitment) if a call to commit on the storage server could hang indefinitely. <rdar://problem/26276166>
* ``fdbcli`` would quit on some commands that were not errors or continue after some real errors when run with ``--exec``. <rdar://problem/25755317>
* Trace files generated by clients using the multi-version API could have name collisions. <rdar://problem/25884486>
Fdbcli
------
* Client issues are now aggregated by name and have an addresses list. Status details prints a truncated view of these. <rdar://problem/23469072>
* Status json lists incompatible clients. <rdar://problem/24415680>
* Status json includes processes that couldn't be reached in the processes list. <rdar://problem/26703551>
* Exclude does not run if it will drop free space below 10%. This check can be bypassed by adding the word ``FORCE`` as a parameter. <rdar://problem/22922266>
* Added write mode, which must be turned on to set or clear keys. <rdar://problem/25779641>
* Added the ``kill`` command for killing processes.
Fdbmonitor
----------
* The restart logic for dead child processes now uses a backoff. <rdar://problem/26100711>
* Added option to remove WD40 environment variables. <rdar://problem/26100669>
* ``fdbmonitor`` will create the lockfile directory if it doesn't exist. <rdar://problem/26502883>
* Added support for monitoring symbolic link changes in the configuration file path. <rdar://problem/26100843>
* Added an option to disable killing of child processes when the configuration changes. <rdar://problem/26100939>
* Added support for larger process IDs. <rdar://problem/26350469>
Backup
------
* Blobstore URLs can now contain multiple IP addresses, separated by commas, over which to load balance requests. <rdar://problem/23095572>
Bindings
--------
* Add error predicate testing to client bindings. This new functionality should help complex use cases write correct transaction retry loops where dispatching on error classes is needed. <rdar://problem/24492860>
Other Changes
-------------
* Maximum shard size increased from 100MB to 500MB. <rdar://problem/21225031>
* Support backslash as an escape character for semicolons and backslashes when setting network options using environment variables. <rdar://problem/23902390>
* Add ``logGroup`` attribute to rolled trace events. <rdar://problem/25726509>
* Calling get range with a begin key == ``\xff\xff/worker_interfaces`` will return a list of serialized worker interfaces. Calling set with the key ``\xff\xff/reboot_worker`` and a value which is a serialized worker interface will reboot that process. <rdar://problem/26101019>
Earlier release notes
---------------------
* :doc:`4.4 (API Version 440) <release-notes-440>`
* :doc:`4.3 (API Version 430) <release-notes-430>`
* :doc:`4.2 (API Version 420) <release-notes-420>`
* :doc:`4.1 (API Version 410) <release-notes-410>`
* :doc:`4.0 (API Version 400) <release-notes-400>`
* :doc:`3.0 (API Version 300) <release-notes-300>`
* :doc:`2.0 (API Version 200) <release-notes-200>`
* :doc:`1.0 (API Version 100) <release-notes-100>`
* :doc:`Beta 3 (API Version 23) <release-notes-023>`
* :doc:`Beta 2 (API Version 22) <release-notes-022>`
* :doc:`Beta 1 (API Version 21) <release-notes-021>`
* :doc:`Alpha 6 (API Version 16) <release-notes-016>`
* :doc:`Alpha 5 (API Version 14) <release-notes-014>`

View File

@ -1,130 +1,130 @@
#############
Release Notes
#############
4.6.5
=====
Bindings
--------
* Java bindings now perform marshaling off of the network thread. <rdar://problem/32413365>
4.6.4
=====
Features
--------
* Added ability to use --io_trust_seconds in a warn-only mode, which logs a trace event rather than failing the process when a disk operation takes a long time. This is enabled with --io_trust_warn_only. <rdar://problem/32344389>
Fixes
-----
* Disk operation timeouts now cause the process to restart rather than hang indefinitely. <rdar://problem/31888796>
* ``fdbdr switch`` did not start the DR in the opposite direction correctly, resulting in mutations being lost. <rdar://problem/32598128>
* Lowered backup and DR batch sizes to avoid large packet warnings. <rdar://problem/30933203>
* Remove partial pipelining of tlog commits.
4.6.3
=====
Features
--------
* Added the ability to run a consistency check of a database using a new server role. <rdar://problem/30903086>
Fixes
-----
* Added the ability to automatically shutdown processes if a disk operation takes a long time to complete. This is enabled with --io_trust_seconds. <rdar://problem/31229332>
* Too many outstanding storage recruitment requests causes the cluster controller to hang. <rdar://problem/30271581>
* Corrected issue with Ubuntu installer package on Ubuntu 16.04 not starting daemon. <rdar://problem/27752324>
* Package non-Linux builds of JNI component into Java jars. <rdar://problem/30786246>
* Published backup-related binaries on macOS were incorrectly pointing to symbolic link specification files. <rdar://problem/31403408>
Performance
-----------
* We no longer fsync trace files. <rdar://problem/30400189>
* Lowered the default bandwidth shard splitting knobs for better performance with hot key ranges. <rdar://problem/30234328>
4.6.2
=====
Fixes
-----
* The tlog could commit more than 100MB at a time <rdar://problem/29312187>
* Metrics with filename component not present in trace events <rdar://problem/29933550>
* Setting new locality information causes missing process metrics in status details <rdar://problem/29992530>
* FDB processes killed via CLI could hang while killing themselves <rdar://problem/29518674>
* Enabled recovery of on-disk data files in the event of a very specific rare corruption situation <rdar://problem/29679886>
* Process messages get reported as errors by status, but don't get attributed to a process in the status details list <rdar://problem/29866630>
* DR prematurely reported progress for work that needed to be retried <rdar://problem/29741198>
Performance
-----------
* Storage engine performance improvements to reduce the overhead that ssd-2 requires for its benefits over ssd-1 <rdar://problem/29332661>
* Lowered the default fetch keys parallelism to slow down data distribution <rdar://problem/29934862>
4.6.1
=====
Fixes
-----
* Starting a new DR on a large database can cause the secondary cluster to lose availability <rdar://problem/29422130>
* Secondary clusters that have been upgraded were reporting "primary" metrics <rdar://problem/29407318>
* Backup and DR could get stuck if too many tasks timed out simultaneously <rdar://problem/29422234>
4.6.0
=====
Features
--------
* Added a new storage engine type ``ssd-2`` that includes page checksums and more efficient storage of large values. The previous storage engine has been renamed ``ssd-1``, and the storage engine ``ssd`` is an alias for ``ssd-2``. <rdar://problem/28565614> <rdar://problem/28723720>
* DR and Restore won't overwrite a non empty database <rdar://problem/27082102> <rdar://problem/27065780>
Performance
-----------
* Improve performance of the ssd storage engine in databases with large keys or values <rdar://problem/28701207>
* Improved cluster recovery speed <rdar://problem/28877814>
* Restore is faster due to better load leveling across the keyspace <rdar://problem/27554051>
* Reduced the conflict ranges applied for get range calls in rare cases <rdar://problem/28034705>
Fixes
-----
* Backup to Blobstore sends and verifies MD5 sums for uploads <rdar://problem/23077230>
* Backup restoration could be unrestorable in certain cases <rdar://problem/27933144>
* Clients using the multi-version client functionality would incorrectly report incompatible connections in status <rdar://problem/28396098>
* Backup and DR network metrics were incorrectly reported as 0 <rdar://problem/28589577>
* Java: fix race condition when removing an empty directory which could lead to a NoSuchElementException <rdar://problem/28858833>
* Fixed a source of potential crashes in fdbcli <rdar://problem/27063940>
Status
------
* The following fields were added: cluster.data.moving_data.total_written_bytes, cluster.qos.limiting_queue_bytes_storage_server, cluster.qos.worst_version_lag_storage_server, cluster.qos.limiting_version_lag_storage_server, cluster.qos.transaction_per_second_limit, cluster.qos.released_transactions_per_second, cluster.qos.performance_limited_by.reason_id, and cluster.database_available
Earlier release notes
---------------------
* :doc:`4.5 (API Version 450) </old-release-notes/release-notes-450>`
* :doc:`4.4 (API Version 440) </old-release-notes/release-notes-440>`
* :doc:`4.3 (API Version 430) </old-release-notes/release-notes-430>`
* :doc:`4.2 (API Version 420) </old-release-notes/release-notes-420>`
* :doc:`4.1 (API Version 410) </old-release-notes/release-notes-410>`
* :doc:`4.0 (API Version 400) </old-release-notes/release-notes-400>`
* :doc:`3.0 (API Version 300) </old-release-notes/release-notes-300>`
* :doc:`2.0 (API Version 200) </old-release-notes/release-notes-200>`
* :doc:`1.0 (API Version 100) </old-release-notes/release-notes-100>`
* :doc:`Beta 3 (API Version 23) </old-release-notes/release-notes-023>`
* :doc:`Beta 2 (API Version 22) </old-release-notes/release-notes-022>`
* :doc:`Beta 1 (API Version 21) </old-release-notes/release-notes-021>`
* :doc:`Alpha 6 (API Version 16) </old-release-notes/release-notes-016>`
* :doc:`Alpha 5 (API Version 14) </old-release-notes/release-notes-014>`
#############
Release Notes
#############
4.6.5
=====
Bindings
--------
* Java bindings now perform marshaling off of the network thread. <rdar://problem/32413365>
4.6.4
=====
Features
--------
* Added ability to use --io_trust_seconds in a warn-only mode, which logs a trace event rather than failing the process when a disk operation takes a long time. This is enabled with --io_trust_warn_only. <rdar://problem/32344389>
Fixes
-----
* Disk operation timeouts now cause the process to restart rather than hang indefinitely. <rdar://problem/31888796>
* ``fdbdr switch`` did not start the DR in the opposite direction correctly, resulting in mutations being lost. <rdar://problem/32598128>
* Lowered backup and DR batch sizes to avoid large packet warnings. <rdar://problem/30933203>
* Remove partial pipelining of tlog commits.
4.6.3
=====
Features
--------
* Added the ability to run a consistency check of a database using a new server role. <rdar://problem/30903086>
Fixes
-----
* Added the ability to automatically shutdown processes if a disk operation takes a long time to complete. This is enabled with --io_trust_seconds. <rdar://problem/31229332>
* Too many outstanding storage recruitment requests causes the cluster controller to hang. <rdar://problem/30271581>
* Corrected issue with Ubuntu installer package on Ubuntu 16.04 not starting daemon. <rdar://problem/27752324>
* Package non-Linux builds of JNI component into Java jars. <rdar://problem/30786246>
* Published backup-related binaries on macOS were incorrectly pointing to symbolic link specification files. <rdar://problem/31403408>
Performance
-----------
* We no longer fsync trace files. <rdar://problem/30400189>
* Lowered the default bandwidth shard splitting knobs for better performance with hot key ranges. <rdar://problem/30234328>
4.6.2
=====
Fixes
-----
* The tlog could commit more than 100MB at a time <rdar://problem/29312187>
* Metrics with filename component not present in trace events <rdar://problem/29933550>
* Setting new locality information causes missing process metrics in status details <rdar://problem/29992530>
* FDB processes killed via CLI could hang while killing themselves <rdar://problem/29518674>
* Enabled recovery of on-disk data files in the event of a very specific rare corruption situation <rdar://problem/29679886>
* Process messages get reported as errors by status, but don't get attributed to a process in the status details list <rdar://problem/29866630>
* DR prematurely reported progress for work that needed to be retried <rdar://problem/29741198>
Performance
-----------
* Storage engine performance improvements to reduce the overhead that ssd-2 requires for its benefits over ssd-1 <rdar://problem/29332661>
* Lowered the default fetch keys parallelism to slow down data distribution <rdar://problem/29934862>
4.6.1
=====
Fixes
-----
* Starting a new DR on a large database can cause the secondary cluster to lose availability <rdar://problem/29422130>
* Secondary clusters that have been upgraded were reporting "primary" metrics <rdar://problem/29407318>
* Backup and DR could get stuck if too many tasks timed out simultaneously <rdar://problem/29422234>
4.6.0
=====
Features
--------
* Added a new storage engine type ``ssd-2`` that includes page checksums and more efficient storage of large values. The previous storage engine has been renamed ``ssd-1``, and the storage engine ``ssd`` is an alias for ``ssd-2``. <rdar://problem/28565614> <rdar://problem/28723720>
* DR and Restore won't overwrite a non empty database <rdar://problem/27082102> <rdar://problem/27065780>
Performance
-----------
* Improve performance of the ssd storage engine in databases with large keys or values <rdar://problem/28701207>
* Improved cluster recovery speed <rdar://problem/28877814>
* Restore is faster due to better load leveling across the keyspace <rdar://problem/27554051>
* Reduced the conflict ranges applied for get range calls in rare cases <rdar://problem/28034705>
Fixes
-----
* Backup to Blobstore sends and verifies MD5 sums for uploads <rdar://problem/23077230>
* Backup restoration could be unrestorable in certain cases <rdar://problem/27933144>
* Clients using the multi-version client functionality would incorrectly report incompatible connections in status <rdar://problem/28396098>
* Backup and DR network metrics were incorrectly reported as 0 <rdar://problem/28589577>
* Java: fix race condition when removing an empty directory which could lead to a NoSuchElementException <rdar://problem/28858833>
* Fixed a source of potential crashes in fdbcli <rdar://problem/27063940>
Status
------
* The following fields were added: cluster.data.moving_data.total_written_bytes, cluster.qos.limiting_queue_bytes_storage_server, cluster.qos.worst_version_lag_storage_server, cluster.qos.limiting_version_lag_storage_server, cluster.qos.transaction_per_second_limit, cluster.qos.released_transactions_per_second, cluster.qos.performance_limited_by.reason_id, and cluster.database_available
Earlier release notes
---------------------
* :doc:`4.5 (API Version 450) </old-release-notes/release-notes-450>`
* :doc:`4.4 (API Version 440) </old-release-notes/release-notes-440>`
* :doc:`4.3 (API Version 430) </old-release-notes/release-notes-430>`
* :doc:`4.2 (API Version 420) </old-release-notes/release-notes-420>`
* :doc:`4.1 (API Version 410) </old-release-notes/release-notes-410>`
* :doc:`4.0 (API Version 400) </old-release-notes/release-notes-400>`
* :doc:`3.0 (API Version 300) </old-release-notes/release-notes-300>`
* :doc:`2.0 (API Version 200) </old-release-notes/release-notes-200>`
* :doc:`1.0 (API Version 100) </old-release-notes/release-notes-100>`
* :doc:`Beta 3 (API Version 23) </old-release-notes/release-notes-023>`
* :doc:`Beta 2 (API Version 22) </old-release-notes/release-notes-022>`
* :doc:`Beta 1 (API Version 21) </old-release-notes/release-notes-021>`
* :doc:`Alpha 6 (API Version 16) </old-release-notes/release-notes-016>`
* :doc:`Alpha 5 (API Version 14) </old-release-notes/release-notes-014>`

View File

@ -1,176 +1,176 @@
#############
Release Notes
#############
5.0.7
=====
Fixes
-----
* Blob backups became corrupt when handling non-retryable errors. <rdar://problem/35289547>
* Blob backup did not retry all http errors correctly. <rdar://problem/34937616>
5.0.6
=====
5.0.5
=====
Fixes
-----
* Set a default memory limit of 8GB on all backup and DR executables. This limit is configurable on the command line. <rdar://problem/34744417>
* The backup agent would keep attempting to write a file to blob for up to an hour after the task was cancelled. <rdar://problem/34745079>
* Incorrect blob backup destination URLs could be parsed as correct but missing IP addresses. <rdar://problem/34751574>
* Blob load balancing and per address connection limits have been improved. <rdar://problem/34744419>
* Fdbmonitor now supports 0-parameter flags. <rdar://problem/34738924>
* The read latencies reported in status were higher than what clients observed. <rdar://problem/33877094>
5.0.4
=====
Fixes
-----
* Logs continued to make their data persistent to disk after being removed. <rdar://problem/33852607>
* Removed logs did not delete their data before shutting down. <rdar://problem/33852342>
* In rare scenarios, a disk error which occured during log recruitment could cause the recruitment to hang indefinately.
5.0.3
=====
Fixes
-----
* In rare scenarios, recovery could get stuck for 10 minutes. <rdar://problem/33782338> <rdar://problem/33780273>
* The consistency check did not work on locked databases. <rdar://problem/33241411>
* In rare scenarios, backup, DR, or fdbcli could hang indefinitely. <rdar://problem/33763769>
* Some transaction log metrics were not being reported. <rdar://problem/30313222>
* Some network metrics were reported incorrectly as extremely large numbers. <rdar://problem/32364301> <rdar://problem/32363905>
5.0.2
=====
Fixes
-----
* Functionality to slowly delete large files with incremental truncation was not enabled. <rdar://problem/33550683>
* Fixed a source of crashes from fdbcli. <rdar://problem/32933471>
* Data distribution was prematurely reporting that it had started.
Bindings
--------
* Go: Use fully-qualified import paths for fdb dependencies. <rdar://problem/32932617>
Other
-----
* Publish header files and static libraries for flow and flow bindings on Linux and macOS. <rdar://problem/33191326>
5.0.1
=====
Fixes
-----
* Bytes input and bytes durable on the log would drift apart due to rounding errors.
5.0.0
=====
Features
--------
* All recoveries no longer copy log data before completion. As a result, the fast_recovery_double and fast_recovery_triple configurations have been removed. <rdar://problem/30235865>
* Added a new configuration ``three_data_hall`` where a single data hall failure cannot bring down a cluster. <rdar://problem/30822968>
* Multiple log processes can be within the same zone. <rdar://problem/29407578>
* Clients have access to sampled latency statistics for their operations. <rdar://problem/29757812>
* Added network checksums. <rdar://problem/30703358>
* Fault tolerance is restored much quicker after a storage server failure. <rdar://problem/30125038>
Performance
-----------
* Improved recovery speed after rebooting the cluster. <rdar://problem/32956590>
* Improved saturation performance of write-heavy workloads. <rdar://problem/30381001>
* We no longer require extra log durability for fast recoveries. <rdar://problem/30235865>
* Backup/DR now use far less cluster resources while idle. <rdar://problem/28374226> <rdar://problem/28640412>
* Improved load balancing performance. <rdar://problem/29289012>
* Reduced conflict range sizes when performing get range queries with key selectors such that the resolved begin key is greater than or equal to the resolved end key. <rdar://problem/30561532>
* Added functionality to slowly delete large files with incremental truncation. <rdar://problem/30193500>
Fixes
-----
* Fixed a pathology where multiple successive failures could lead to a long 30+ minute availability outage. <rdar://problem/30235865>
* Updated status to have failures of old tlogs included in the failure tolerance calculation. <rdar://problem/30615411>
* The fdbserver and fdbbackup processes could return a successful error code after a fatal error. <rdar://problem/31350017>
* Fault tolerance did not reflect coordinators sharing the same machine ID. <rdar://problem/31195167>
* Prevent the DR seconds behind measurement from potentially returning a negative amount. <rdar://problem/32235105>
* Increased the priority of all cluster controller work to prevent the cluster controller from being starved by other work on the same process. <rdar://problem/32958023>
* Fixed a rare crash in the DR agent. <rdar://problem/30766452>
* fdbcli and fdb_c clients logs had 0 values for most ProcessMetrics log event fields. <rdar://problem/31017524>
* DR could get stuck if the time required to copy range data was longer than the task timeout. <rdar://problem/32958570>
Status
------
* Improved latency probe accuracy when the cluster is loaded. <rdar://problem/30465855>
* Report GRV latencies at all priorities in the latency probe. <rdar://problem/30465855>
* For the SSD storage engine, available disk space now includes space within data files that is not currently in use and can be reused. <rdar://problem/29998454>
* Storage servers report how far they are lagging behind the logs. ``fdbcli`` now reports servers that are lagging sufficiently far behind. <rdar://problem/30166503>
* Status json "incompatible_connections" did not work with multiversion clients. <rdar://problem/28396098>
* Added connection counts and establish/close metrics to status json.<rdar://problem/28393970>
Bindings
--------
* API version updated to 500.
* Tuples now support single- and double-precision floating point numbers, UUIDs, booleans, and nested tuples. <rdar://problem/30053926>
* Add ``TRANSACTION_LOGGING_ENABLE`` transaction option that causes the details of a transaction's operations to be logged to the client trace logs. <rdar://problem/32074484>
* Add ``USED_DURING_COMMIT_PROTECTION_DISABLE`` transaction option that prevents operations performed during that transaction's commit from causing the commit to fail. <rdar://problem/30378251>
* Add ``ENABLE_SLOW_TASK_PROFILING`` network option that logs backtraces for long running flow tasks. <rdar://problem/30975759>
* ``getBoundaryKeys`` can be used on locked databases. <rdar://problem/28760070>
* Flow: API versions prior to 500 are no longer supported. <rdar://problem/32433458>
* Flow: ``Cluster::createDatabase`` no longer takes a DB name parameter. <rdar://problem/32433458>
* Node: API versions prior to 500 are no longer supported. <rdar://problem/32433437>
* Node: ``fdb.open`` and ``Cluster.openDatabase`` no longer take a DB name parameter. <rdar://problem/32433437>
* Java: API versions prior to 500 are no longer supported. <rdar://problem/30378251>
* Java: ``FDB.open`` and ``Cluster.openDatabase`` no longer take a DB name parameter. <rdar://problem/32078379>
* Java: Removed ``Transaction.reset`` from the API. <rdar://problem/32409970>
* Java: ``Transaction.onError`` invalidates its ``Transaction`` and asynchronously returns a new ``Transaction`` to replace it. <rdar://problem/30378251>
* Java: Transactions always enable the ``USED_DURING_COMMIT_PROTECTION_DISABLE`` transaction option, preventing operations that occur during a commit from causing the commit to fail. <rdar://problem/30378251>
* Java: There are now options to set the executor for async call backs at the database and transaction level. <rdar://problem/31636701>
* Java: Static functions that perform async operations now have overloads that allow the user to specify an executor. <rdar://problem/26143365>
* Java: Range class now implements equals, toString, and hashCode methods. <rdar://problem/31790542>
* Java: Tuples now expose a "stream" method to get a stream of their objects and "fromStream" to convert streams back into tuples. <rdar://problem/31767147>
* Java: Addressed a pathology that made AsyncUtil.whileTrue susceptible to long chains of futures. <rdar://problem/30054445>
Other Changes
-------------
* Added the ``-v``/``--version`` flag to report version information for the ``fdbcli`` binary <rdar://problem/31091644>
* Introduced the ``data_filesystem`` command line argument for the ``fdbserver`` binary to prevent data from being written to the root drive. <rdar://problem/30716138>
* Added a ``ClientStart`` trace event to client trace files with details about the client library being used.
* fdbserver now rejects all unrecognized command-line arguments. <rdar://problem/31853278>
* All fdbserver command-line options now have both short- and long-form equivalents. <rdar://problem/31853278>
Earlier release notes
---------------------
* :doc:`4.6 (API Version 460) </old-release-notes/release-notes-460>`
* :doc:`4.5 (API Version 450) </old-release-notes/release-notes-450>`
* :doc:`4.4 (API Version 440) </old-release-notes/release-notes-440>`
* :doc:`4.3 (API Version 430) </old-release-notes/release-notes-430>`
* :doc:`4.2 (API Version 420) </old-release-notes/release-notes-420>`
* :doc:`4.1 (API Version 410) </old-release-notes/release-notes-410>`
* :doc:`4.0 (API Version 400) </old-release-notes/release-notes-400>`
* :doc:`3.0 (API Version 300) </old-release-notes/release-notes-300>`
* :doc:`2.0 (API Version 200) </old-release-notes/release-notes-200>`
* :doc:`1.0 (API Version 100) </old-release-notes/release-notes-100>`
* :doc:`Beta 3 (API Version 23) </old-release-notes/release-notes-023>`
* :doc:`Beta 2 (API Version 22) </old-release-notes/release-notes-022>`
* :doc:`Beta 1 (API Version 21) </old-release-notes/release-notes-021>`
* :doc:`Alpha 6 (API Version 16) </old-release-notes/release-notes-016>`
* :doc:`Alpha 5 (API Version 14) </old-release-notes/release-notes-014>`
#############
Release Notes
#############
5.0.7
=====
Fixes
-----
* Blob backups became corrupt when handling non-retryable errors. <rdar://problem/35289547>
* Blob backup did not retry all http errors correctly. <rdar://problem/34937616>
5.0.6
=====
5.0.5
=====
Fixes
-----
* Set a default memory limit of 8GB on all backup and DR executables. This limit is configurable on the command line. <rdar://problem/34744417>
* The backup agent would keep attempting to write a file to blob for up to an hour after the task was cancelled. <rdar://problem/34745079>
* Incorrect blob backup destination URLs could be parsed as correct but missing IP addresses. <rdar://problem/34751574>
* Blob load balancing and per address connection limits have been improved. <rdar://problem/34744419>
* Fdbmonitor now supports 0-parameter flags. <rdar://problem/34738924>
* The read latencies reported in status were higher than what clients observed. <rdar://problem/33877094>
5.0.4
=====
Fixes
-----
* Logs continued to make their data persistent to disk after being removed. <rdar://problem/33852607>
* Removed logs did not delete their data before shutting down. <rdar://problem/33852342>
* In rare scenarios, a disk error which occured during log recruitment could cause the recruitment to hang indefinately.
5.0.3
=====
Fixes
-----
* In rare scenarios, recovery could get stuck for 10 minutes. <rdar://problem/33782338> <rdar://problem/33780273>
* The consistency check did not work on locked databases. <rdar://problem/33241411>
* In rare scenarios, backup, DR, or fdbcli could hang indefinitely. <rdar://problem/33763769>
* Some transaction log metrics were not being reported. <rdar://problem/30313222>
* Some network metrics were reported incorrectly as extremely large numbers. <rdar://problem/32364301> <rdar://problem/32363905>
5.0.2
=====
Fixes
-----
* Functionality to slowly delete large files with incremental truncation was not enabled. <rdar://problem/33550683>
* Fixed a source of crashes from fdbcli. <rdar://problem/32933471>
* Data distribution was prematurely reporting that it had started.
Bindings
--------
* Go: Use fully-qualified import paths for fdb dependencies. <rdar://problem/32932617>
Other
-----
* Publish header files and static libraries for flow and flow bindings on Linux and macOS. <rdar://problem/33191326>
5.0.1
=====
Fixes
-----
* Bytes input and bytes durable on the log would drift apart due to rounding errors.
5.0.0
=====
Features
--------
* All recoveries no longer copy log data before completion. As a result, the fast_recovery_double and fast_recovery_triple configurations have been removed. <rdar://problem/30235865>
* Added a new configuration ``three_data_hall`` where a single data hall failure cannot bring down a cluster. <rdar://problem/30822968>
* Multiple log processes can be within the same zone. <rdar://problem/29407578>
* Clients have access to sampled latency statistics for their operations. <rdar://problem/29757812>
* Added network checksums. <rdar://problem/30703358>
* Fault tolerance is restored much quicker after a storage server failure. <rdar://problem/30125038>
Performance
-----------
* Improved recovery speed after rebooting the cluster. <rdar://problem/32956590>
* Improved saturation performance of write-heavy workloads. <rdar://problem/30381001>
* We no longer require extra log durability for fast recoveries. <rdar://problem/30235865>
* Backup/DR now use far less cluster resources while idle. <rdar://problem/28374226> <rdar://problem/28640412>
* Improved load balancing performance. <rdar://problem/29289012>
* Reduced conflict range sizes when performing get range queries with key selectors such that the resolved begin key is greater than or equal to the resolved end key. <rdar://problem/30561532>
* Added functionality to slowly delete large files with incremental truncation. <rdar://problem/30193500>
Fixes
-----
* Fixed a pathology where multiple successive failures could lead to a long 30+ minute availability outage. <rdar://problem/30235865>
* Updated status to have failures of old tlogs included in the failure tolerance calculation. <rdar://problem/30615411>
* The fdbserver and fdbbackup processes could return a successful error code after a fatal error. <rdar://problem/31350017>
* Fault tolerance did not reflect coordinators sharing the same machine ID. <rdar://problem/31195167>
* Prevent the DR seconds behind measurement from potentially returning a negative amount. <rdar://problem/32235105>
* Increased the priority of all cluster controller work to prevent the cluster controller from being starved by other work on the same process. <rdar://problem/32958023>
* Fixed a rare crash in the DR agent. <rdar://problem/30766452>
* fdbcli and fdb_c clients logs had 0 values for most ProcessMetrics log event fields. <rdar://problem/31017524>
* DR could get stuck if the time required to copy range data was longer than the task timeout. <rdar://problem/32958570>
Status
------
* Improved latency probe accuracy when the cluster is loaded. <rdar://problem/30465855>
* Report GRV latencies at all priorities in the latency probe. <rdar://problem/30465855>
* For the SSD storage engine, available disk space now includes space within data files that is not currently in use and can be reused. <rdar://problem/29998454>
* Storage servers report how far they are lagging behind the logs. ``fdbcli`` now reports servers that are lagging sufficiently far behind. <rdar://problem/30166503>
* Status json "incompatible_connections" did not work with multiversion clients. <rdar://problem/28396098>
* Added connection counts and establish/close metrics to status json.<rdar://problem/28393970>
Bindings
--------
* API version updated to 500.
* Tuples now support single- and double-precision floating point numbers, UUIDs, booleans, and nested tuples. <rdar://problem/30053926>
* Add ``TRANSACTION_LOGGING_ENABLE`` transaction option that causes the details of a transaction's operations to be logged to the client trace logs. <rdar://problem/32074484>
* Add ``USED_DURING_COMMIT_PROTECTION_DISABLE`` transaction option that prevents operations performed during that transaction's commit from causing the commit to fail. <rdar://problem/30378251>
* Add ``ENABLE_SLOW_TASK_PROFILING`` network option that logs backtraces for long running flow tasks. <rdar://problem/30975759>
* ``getBoundaryKeys`` can be used on locked databases. <rdar://problem/28760070>
* Flow: API versions prior to 500 are no longer supported. <rdar://problem/32433458>
* Flow: ``Cluster::createDatabase`` no longer takes a DB name parameter. <rdar://problem/32433458>
* Node: API versions prior to 500 are no longer supported. <rdar://problem/32433437>
* Node: ``fdb.open`` and ``Cluster.openDatabase`` no longer take a DB name parameter. <rdar://problem/32433437>
* Java: API versions prior to 500 are no longer supported. <rdar://problem/30378251>
* Java: ``FDB.open`` and ``Cluster.openDatabase`` no longer take a DB name parameter. <rdar://problem/32078379>
* Java: Removed ``Transaction.reset`` from the API. <rdar://problem/32409970>
* Java: ``Transaction.onError`` invalidates its ``Transaction`` and asynchronously returns a new ``Transaction`` to replace it. <rdar://problem/30378251>
* Java: Transactions always enable the ``USED_DURING_COMMIT_PROTECTION_DISABLE`` transaction option, preventing operations that occur during a commit from causing the commit to fail. <rdar://problem/30378251>
* Java: There are now options to set the executor for async call backs at the database and transaction level. <rdar://problem/31636701>
* Java: Static functions that perform async operations now have overloads that allow the user to specify an executor. <rdar://problem/26143365>
* Java: Range class now implements equals, toString, and hashCode methods. <rdar://problem/31790542>
* Java: Tuples now expose a "stream" method to get a stream of their objects and "fromStream" to convert streams back into tuples. <rdar://problem/31767147>
* Java: Addressed a pathology that made AsyncUtil.whileTrue susceptible to long chains of futures. <rdar://problem/30054445>
Other Changes
-------------
* Added the ``-v``/``--version`` flag to report version information for the ``fdbcli`` binary <rdar://problem/31091644>
* Introduced the ``data_filesystem`` command line argument for the ``fdbserver`` binary to prevent data from being written to the root drive. <rdar://problem/30716138>
* Added a ``ClientStart`` trace event to client trace files with details about the client library being used.
* fdbserver now rejects all unrecognized command-line arguments. <rdar://problem/31853278>
* All fdbserver command-line options now have both short- and long-form equivalents. <rdar://problem/31853278>
Earlier release notes
---------------------
* :doc:`4.6 (API Version 460) </old-release-notes/release-notes-460>`
* :doc:`4.5 (API Version 450) </old-release-notes/release-notes-450>`
* :doc:`4.4 (API Version 440) </old-release-notes/release-notes-440>`
* :doc:`4.3 (API Version 430) </old-release-notes/release-notes-430>`
* :doc:`4.2 (API Version 420) </old-release-notes/release-notes-420>`
* :doc:`4.1 (API Version 410) </old-release-notes/release-notes-410>`
* :doc:`4.0 (API Version 400) </old-release-notes/release-notes-400>`
* :doc:`3.0 (API Version 300) </old-release-notes/release-notes-300>`
* :doc:`2.0 (API Version 200) </old-release-notes/release-notes-200>`
* :doc:`1.0 (API Version 100) </old-release-notes/release-notes-100>`
* :doc:`Beta 3 (API Version 23) </old-release-notes/release-notes-023>`
* :doc:`Beta 2 (API Version 22) </old-release-notes/release-notes-022>`
* :doc:`Beta 1 (API Version 21) </old-release-notes/release-notes-021>`
* :doc:`Alpha 6 (API Version 16) </old-release-notes/release-notes-016>`
* :doc:`Alpha 5 (API Version 14) </old-release-notes/release-notes-014>`

View File

@ -1,214 +1,214 @@
#############
Release Notes
#############
5.1.7
=====
Fixes
-----
* fdbdr switch could take a long time to complete if the two clusters were not created at the same time. <rdar://problem/37551521>
5.1.6
=====
Fixes
-----
* Expiring a backup could cause the fdbbackup process to hang indefinitely. <rdar://problem/39382121>
5.1.5
=====
Fixes
-----
* The consistency check calculated the size of the database inefficiently. <rdar://problem/38385230>
* Could not create new directories with the Python and Ruby implementations of the directory layer. <rdar://problem/38911902> <rdar://problem/38477474>
* fdbcli could erroneously report that it was incompatible with some processes in the cluster. <rdar://problem/39353867>
* The commit commmand in fdbcli did not wait for the result of the commit before continuing to the next command.
Other Changes
-------------
* renamed the ``multi_dc`` replication mode to ``three_datacenter``.
5.1.4
=====
Fixes
-----
* The master would recover twice when a new cluster controller was elected. <rdar://problem/38305649>
* The cluster controller could be elected on a storage process after restarting all processes in a cluster. <rdar://problem/37946424>
* Allow backup expiration to succeed if the backup is too new to be restorable. <rdar://problem/38237313>
* Process metric collection in status could sometimes fail. <rdar://problem/38311829>
5.1.3
=====
Fixes
-----
* The backup agents ran out of memory when heavily loaded. <rdar://problem/37509745>
* Storage servers were not marked as failed until after their files were deleted. <rdar://problem/38266562>
* The consistency check requested too many shards in the same request from the proxy. <rdar://problem/37326268>
* Client knobs for blob send/receive were reversed in meaning. <rdar://problem/37945529>
* fdbbackup status provides more information on reported errors. <rdar://problem/36200858> <rdar://problem/37461836>
5.1.2
=====
Fixes
-----
* Backup did not incrementally delete mutations from the mutation log. <rdar://problem/37609229>
* fdbcli status misreported completed backup/DR as running. <rdar://problem/37608661>
* Stopped producing the "fdbblob" alias for fdbbackup. <rdar://problem/37244632>
5.1.1
=====
Fixes
-----
* Bindings: Disposing a transaction during a commit resulted in a broken promise from ``get_versionstamp``. <rdar://problem/35835272>
* Bindings: Calling ``create_cluster`` before initializing the network would result in a crash. <rdar://problem/35563243>
* Latest restorable version of a running backup was not being updated in backup layer status.<rdar://problem/37288715>
* Backup layer status would sometimes show an error or an incorrect value for the recent blob bandwidth metric. <rdar://problem/37288943>
* Backup deletions were not deleting all of the files related to the backup. <rdar://problem/37756550>
* The cluster controller was sharing a process with the master even when better locations existed. <rdar://problem/37318611>
* Blob credentials files were being opened in read-write mode.
* Sometimes fdbbackup did not write log files even when ``--log`` was passed on the command line. <rdar://problem/36259384>
Performance
-----------
* Backup file uploads will respond to server-side throttling in the middle of a chunk upload rather than only between chunks. <rdar://problem/37245992>
5.1.0
=====
Features
--------
* Backups continually write snapshots at a configured interval, reducing restore times for long running backups. <rdar://problem/25512772>
* Old backup snapshots and associated logs can be deleted from a backup. <rdar://problem/25512772>
* Backup files are stored in a deep folder structure. <rdar://problem/27723412>
* Restore allows you to specify an approximate time instead of a version. <rdar://problem/34557380>
* Backup and DR agents can be paused from ``fdbbackup`` and ``fdbdr`` respectively. <rdar://problem/34776039>
* Added byte min and byte max atomic operations. <rdar://problem/29255441>
* The behavior of atomic "and" and "min" operations has changed when the key doesn't exist in the database. If the key is not present, then an "and" or "min" is now equivalent to a set. <rdar://problem/29255441>
* Exception messages are more descriptive. <rdar://problem/33665340>
* Clients can view a sample of committed mutations. <rdar://problem/33324935>
* When switching to a DR cluster, the commit versions on that cluster will be higher than the versions on the primary cluster. <rdar://problem/33572665>
* Added a read-only lock aware transaction option. <rdar://problem/34579176>
* Automatically suppress trace log events which occur too frequently. <rdar://problem/33764208>
* Added a new ``multi_dc`` replication mode designed for cross data center deployments. <rdar://problem/36489132>
Performance
-----------
* The data distribution algorithm can split the system keyspace. <rdar://problem/29932360>
* Improved load balancing when servers are located across multiple data centers. <rdar://problem/34213649>
* Improved read latencies after recoveries by only making servers responsible for keys if they have finished copying the data from other servers. <rdar://problem/34697182>
* Improved recovery times by waiting until a process has finished recovering its data from disk before letting it be recruited for new roles. <rdar://problem/32000146> <rdar://problem/34212951>
* Improved 95% read version latencies by reducing the number of logs required to confirm that a proxy has not been replaced. <rdar://problem/33196298>
* Stopped the transaction logs from copying unneeded data after multiple successive recoveries. <rdar://problem/36488946>
* Significantly improved the performance of range reads. <rdar://problem/33926224>
* The cluster controller prefers to be recruited on stateless class processes and will not put other stateless roles on the same process. <rdar://problem/35155324>
* Excluded servers no longer take on stateless roles. <rdar://problem/27110802>
* Stateless roles will be proactively moved off of excluded processes. <rdar://problem/27110802> <rdar://problem/35155044>
* Dramatically improved restore speeds of large disk queue files. <rdar://problem/35567320>
* Clients get key location information directly from the proxies, significantly reducing the latency of worst case read patterns. <rdar://problem/35953920>
* Reduced the amount of work incompatible clients generate for coordinators and the cluster controller. In particular, this reduces the load on the cluster caused by using the multi-version client. <rdar://problem/30897631>
* Pop partially recovered mutations from the transaction log to save disk space after multiple successive recoveries. <rdar://problem/33755270>
* Stopped using network checksums when also using TLS. <rdar://problem/32157852>
* Improved cluster performance after recoveries by prioritizing processing new mutations on the logs over copying data from the previous logs. <rdar://problem/36489337>
* Backup agents prefer reading from servers in the same data center. <rdar://problem/34213617>
Fixes
-----
* New databases immediately configured into ``three_data_hall`` would not respect the ``three_data_hall`` constraint. <rdar://problem/34415440>
* Exclude considered the free space of non-storage processes when determining if an exclude was safe.
* ``fdbmonitor`` failed to start processes after fork failure. <rdar://problem/34743257>
* ``fdbmonitor`` will only stop processes when the configuration file is deleted if ``kill_on_configuration_change`` is set. <rdar://problem/35497412>
* The data distribution algorithm would hang indefinitely when asked to build storage teams with more than three servers.
* Mutations from a restore could continue to be applied for a very short amount of time after a restore was successfully aborted.
Extremely Rare Bug Fixes
------------------------
* Storage servers did not properly handle rollbacks to versions before their restored version.
* A newly recruited transaction log configured with the memory storage engine could crash on startup.
* The data distribution algorithm could split a key range so that one part did not have any data.
* Storage servers could update to an incorrect version after a master failure.
* The disk queue could report a commit as successful before the sync of the disk queue files completed.
* A disk queue which was shutdown before completing its first commit could become unrecoverable.
Status
------
* If a cluster cannot recover because too many transaction logs are missing, status lists the missing logs. <rdar://problem/34965531>
* The list of connected clients includes their trace log groups. <rdar://problem/33779874>
* Status reports if a cluster is being used as a DR destination. <rdar://problem/34971187>
Bindings
--------
* API version updated to 510.
* Add versionstamp support to the Tuple layer in Java and Python. <rdar://problem/25560444>
Java
----
* API versions prior to 510 are no longer supported.
* The bindings have been moved to the package ``com.apple.foundationdb`` from ``com.apple.cie.foundationdb``. <rdar://problem/33271641>
* We no longer offer a version of the Java bindings with our custom futures library or support Java versions less than 8. The bindings that use completable futures have been renamed to ``fdb-java``. <rdar://problem/35029630>
* Finalizers now log a warning to stderr if an object with native resources is not closed. This can be disabled by calling ``FDB.setUnclosedWarning()``. <rdar://problem/35421530>
* Implementers of the ``Disposable`` interface now implement ``AutoCloseable`` instead, with ``close()`` replacing ``dispose()``.
* ``AutoCloseable`` objects will continue to be closed in object finalizers, but this behavior is being deprecated. All ``AutoCloseable`` objects should be explicitly closed. <rdar://problem/35421530>
* ``AsyncIterator`` is no longer closeable. <rdar://problem/35595971>
* ``getBoundaryKeys()`` now returns a ``CloseableAsyncIterable`` rather than an ``AsyncIterator``. <rdar://problem/35421530>
* ``Transaction.getRange()`` no longer initiates a range read immediately. Instead, the read is issued by a call to ``AsyncIterable.asList()`` or ``AsyncIterable.iterator()``. <rdar://problem/35595971>
* Added ``hashCode()`` method to ``Subspace``. <rdar://problem/35125601>
* Added thread names to threads created by our default executor. <rdar://problem/36077166>
* The network thread by default will be named ``fdb-network-thread``. <rdar://problem/36077166>
* Added an overload of ``whileTrue()`` which takes a ``Supplier``. <rdar://problem/35096338>
* Added experimental support for enabling native callbacks from external threads. <rdar://problem/33300740>
* Fix: Converting the result of ``Transaction.getRange()`` to a list would issue an unneeded range read. <rdar://problem/35325444>
* Fix: range iterators failed to close underlying native resources. <rdar://problem/35595971>
* Fix: various objects internal to the bindings were not properly closed. <rdar://problem/35541447>
Other Changes
-------------
* Backups made prior to 5.1 can no longer be restored. <rdar://problem/25512772>
* Backup now uses a hostname in the connection string instead of a list of IPs when backing up to blob storage. This hostname is resolved using DNS. <rdar://problem/34093405>
* ``fdbblob`` functionality has been moved to ``fdbbackup``. <rdar://problem/25512772>
* ``fdbcli`` will warn the user if it is used to connect to an incompatible cluster. <rdar://problem/33363571>
* Cluster files that do not match the current connection string are no longer corrected automatically. <rdar://problem/35129575>
* Improved computation of available memory on pre-3.14 kernels. <rdar://problem/35336487>
* Stopped reporting blob storage connection credentials in ``fdbbackup`` status output. <rdar://problem/31483629>
Earlier release notes
---------------------
* :doc:`5.0 (API Version 500) </old-release-notes/release-notes-500>`
* :doc:`4.6 (API Version 460) </old-release-notes/release-notes-460>`
* :doc:`4.5 (API Version 450) </old-release-notes/release-notes-450>`
* :doc:`4.4 (API Version 440) </old-release-notes/release-notes-440>`
* :doc:`4.3 (API Version 430) </old-release-notes/release-notes-430>`
* :doc:`4.2 (API Version 420) </old-release-notes/release-notes-420>`
* :doc:`4.1 (API Version 410) </old-release-notes/release-notes-410>`
* :doc:`4.0 (API Version 400) </old-release-notes/release-notes-400>`
* :doc:`3.0 (API Version 300) </old-release-notes/release-notes-300>`
* :doc:`2.0 (API Version 200) </old-release-notes/release-notes-200>`
* :doc:`1.0 (API Version 100) </old-release-notes/release-notes-100>`
* :doc:`Beta 3 (API Version 23) </old-release-notes/release-notes-023>`
* :doc:`Beta 2 (API Version 22) </old-release-notes/release-notes-022>`
* :doc:`Beta 1 (API Version 21) </old-release-notes/release-notes-021>`
* :doc:`Alpha 6 (API Version 16) </old-release-notes/release-notes-016>`
* :doc:`Alpha 5 (API Version 14) </old-release-notes/release-notes-014>`
#############
Release Notes
#############
5.1.7
=====
Fixes
-----
* fdbdr switch could take a long time to complete if the two clusters were not created at the same time. <rdar://problem/37551521>
5.1.6
=====
Fixes
-----
* Expiring a backup could cause the fdbbackup process to hang indefinitely. <rdar://problem/39382121>
5.1.5
=====
Fixes
-----
* The consistency check calculated the size of the database inefficiently. <rdar://problem/38385230>
* Could not create new directories with the Python and Ruby implementations of the directory layer. <rdar://problem/38911902> <rdar://problem/38477474>
* fdbcli could erroneously report that it was incompatible with some processes in the cluster. <rdar://problem/39353867>
* The commit commmand in fdbcli did not wait for the result of the commit before continuing to the next command.
Other Changes
-------------
* renamed the ``multi_dc`` replication mode to ``three_datacenter``.
5.1.4
=====
Fixes
-----
* The master would recover twice when a new cluster controller was elected. <rdar://problem/38305649>
* The cluster controller could be elected on a storage process after restarting all processes in a cluster. <rdar://problem/37946424>
* Allow backup expiration to succeed if the backup is too new to be restorable. <rdar://problem/38237313>
* Process metric collection in status could sometimes fail. <rdar://problem/38311829>
5.1.3
=====
Fixes
-----
* The backup agents ran out of memory when heavily loaded. <rdar://problem/37509745>
* Storage servers were not marked as failed until after their files were deleted. <rdar://problem/38266562>
* The consistency check requested too many shards in the same request from the proxy. <rdar://problem/37326268>
* Client knobs for blob send/receive were reversed in meaning. <rdar://problem/37945529>
* fdbbackup status provides more information on reported errors. <rdar://problem/36200858> <rdar://problem/37461836>
5.1.2
=====
Fixes
-----
* Backup did not incrementally delete mutations from the mutation log. <rdar://problem/37609229>
* fdbcli status misreported completed backup/DR as running. <rdar://problem/37608661>
* Stopped producing the "fdbblob" alias for fdbbackup. <rdar://problem/37244632>
5.1.1
=====
Fixes
-----
* Bindings: Disposing a transaction during a commit resulted in a broken promise from ``get_versionstamp``. <rdar://problem/35835272>
* Bindings: Calling ``create_cluster`` before initializing the network would result in a crash. <rdar://problem/35563243>
* Latest restorable version of a running backup was not being updated in backup layer status.<rdar://problem/37288715>
* Backup layer status would sometimes show an error or an incorrect value for the recent blob bandwidth metric. <rdar://problem/37288943>
* Backup deletions were not deleting all of the files related to the backup. <rdar://problem/37756550>
* The cluster controller was sharing a process with the master even when better locations existed. <rdar://problem/37318611>
* Blob credentials files were being opened in read-write mode.
* Sometimes fdbbackup did not write log files even when ``--log`` was passed on the command line. <rdar://problem/36259384>
Performance
-----------
* Backup file uploads will respond to server-side throttling in the middle of a chunk upload rather than only between chunks. <rdar://problem/37245992>
5.1.0
=====
Features
--------
* Backups continually write snapshots at a configured interval, reducing restore times for long running backups. <rdar://problem/25512772>
* Old backup snapshots and associated logs can be deleted from a backup. <rdar://problem/25512772>
* Backup files are stored in a deep folder structure. <rdar://problem/27723412>
* Restore allows you to specify an approximate time instead of a version. <rdar://problem/34557380>
* Backup and DR agents can be paused from ``fdbbackup`` and ``fdbdr`` respectively. <rdar://problem/34776039>
* Added byte min and byte max atomic operations. <rdar://problem/29255441>
* The behavior of atomic "and" and "min" operations has changed when the key doesn't exist in the database. If the key is not present, then an "and" or "min" is now equivalent to a set. <rdar://problem/29255441>
* Exception messages are more descriptive. <rdar://problem/33665340>
* Clients can view a sample of committed mutations. <rdar://problem/33324935>
* When switching to a DR cluster, the commit versions on that cluster will be higher than the versions on the primary cluster. <rdar://problem/33572665>
* Added a read-only lock aware transaction option. <rdar://problem/34579176>
* Automatically suppress trace log events which occur too frequently. <rdar://problem/33764208>
* Added a new ``multi_dc`` replication mode designed for cross data center deployments. <rdar://problem/36489132>
Performance
-----------
* The data distribution algorithm can split the system keyspace. <rdar://problem/29932360>
* Improved load balancing when servers are located across multiple data centers. <rdar://problem/34213649>
* Improved read latencies after recoveries by only making servers responsible for keys if they have finished copying the data from other servers. <rdar://problem/34697182>
* Improved recovery times by waiting until a process has finished recovering its data from disk before letting it be recruited for new roles. <rdar://problem/32000146> <rdar://problem/34212951>
* Improved 95% read version latencies by reducing the number of logs required to confirm that a proxy has not been replaced. <rdar://problem/33196298>
* Stopped the transaction logs from copying unneeded data after multiple successive recoveries. <rdar://problem/36488946>
* Significantly improved the performance of range reads. <rdar://problem/33926224>
* The cluster controller prefers to be recruited on stateless class processes and will not put other stateless roles on the same process. <rdar://problem/35155324>
* Excluded servers no longer take on stateless roles. <rdar://problem/27110802>
* Stateless roles will be proactively moved off of excluded processes. <rdar://problem/27110802> <rdar://problem/35155044>
* Dramatically improved restore speeds of large disk queue files. <rdar://problem/35567320>
* Clients get key location information directly from the proxies, significantly reducing the latency of worst case read patterns. <rdar://problem/35953920>
* Reduced the amount of work incompatible clients generate for coordinators and the cluster controller. In particular, this reduces the load on the cluster caused by using the multi-version client. <rdar://problem/30897631>
* Pop partially recovered mutations from the transaction log to save disk space after multiple successive recoveries. <rdar://problem/33755270>
* Stopped using network checksums when also using TLS. <rdar://problem/32157852>
* Improved cluster performance after recoveries by prioritizing processing new mutations on the logs over copying data from the previous logs. <rdar://problem/36489337>
* Backup agents prefer reading from servers in the same data center. <rdar://problem/34213617>
Fixes
-----
* New databases immediately configured into ``three_data_hall`` would not respect the ``three_data_hall`` constraint. <rdar://problem/34415440>
* Exclude considered the free space of non-storage processes when determining if an exclude was safe.
* ``fdbmonitor`` failed to start processes after fork failure. <rdar://problem/34743257>
* ``fdbmonitor`` will only stop processes when the configuration file is deleted if ``kill_on_configuration_change`` is set. <rdar://problem/35497412>
* The data distribution algorithm would hang indefinitely when asked to build storage teams with more than three servers.
* Mutations from a restore could continue to be applied for a very short amount of time after a restore was successfully aborted.
Extremely Rare Bug Fixes
------------------------
* Storage servers did not properly handle rollbacks to versions before their restored version.
* A newly recruited transaction log configured with the memory storage engine could crash on startup.
* The data distribution algorithm could split a key range so that one part did not have any data.
* Storage servers could update to an incorrect version after a master failure.
* The disk queue could report a commit as successful before the sync of the disk queue files completed.
* A disk queue which was shutdown before completing its first commit could become unrecoverable.
Status
------
* If a cluster cannot recover because too many transaction logs are missing, status lists the missing logs. <rdar://problem/34965531>
* The list of connected clients includes their trace log groups. <rdar://problem/33779874>
* Status reports if a cluster is being used as a DR destination. <rdar://problem/34971187>
Bindings
--------
* API version updated to 510.
* Add versionstamp support to the Tuple layer in Java and Python. <rdar://problem/25560444>
Java
----
* API versions prior to 510 are no longer supported.
* The bindings have been moved to the package ``com.apple.foundationdb`` from ``com.apple.cie.foundationdb``. <rdar://problem/33271641>
* We no longer offer a version of the Java bindings with our custom futures library or support Java versions less than 8. The bindings that use completable futures have been renamed to ``fdb-java``. <rdar://problem/35029630>
* Finalizers now log a warning to stderr if an object with native resources is not closed. This can be disabled by calling ``FDB.setUnclosedWarning()``. <rdar://problem/35421530>
* Implementers of the ``Disposable`` interface now implement ``AutoCloseable`` instead, with ``close()`` replacing ``dispose()``.
* ``AutoCloseable`` objects will continue to be closed in object finalizers, but this behavior is being deprecated. All ``AutoCloseable`` objects should be explicitly closed. <rdar://problem/35421530>
* ``AsyncIterator`` is no longer closeable. <rdar://problem/35595971>
* ``getBoundaryKeys()`` now returns a ``CloseableAsyncIterable`` rather than an ``AsyncIterator``. <rdar://problem/35421530>
* ``Transaction.getRange()`` no longer initiates a range read immediately. Instead, the read is issued by a call to ``AsyncIterable.asList()`` or ``AsyncIterable.iterator()``. <rdar://problem/35595971>
* Added ``hashCode()`` method to ``Subspace``. <rdar://problem/35125601>
* Added thread names to threads created by our default executor. <rdar://problem/36077166>
* The network thread by default will be named ``fdb-network-thread``. <rdar://problem/36077166>
* Added an overload of ``whileTrue()`` which takes a ``Supplier``. <rdar://problem/35096338>
* Added experimental support for enabling native callbacks from external threads. <rdar://problem/33300740>
* Fix: Converting the result of ``Transaction.getRange()`` to a list would issue an unneeded range read. <rdar://problem/35325444>
* Fix: range iterators failed to close underlying native resources. <rdar://problem/35595971>
* Fix: various objects internal to the bindings were not properly closed. <rdar://problem/35541447>
Other Changes
-------------
* Backups made prior to 5.1 can no longer be restored. <rdar://problem/25512772>
* Backup now uses a hostname in the connection string instead of a list of IPs when backing up to blob storage. This hostname is resolved using DNS. <rdar://problem/34093405>
* ``fdbblob`` functionality has been moved to ``fdbbackup``. <rdar://problem/25512772>
* ``fdbcli`` will warn the user if it is used to connect to an incompatible cluster. <rdar://problem/33363571>
* Cluster files that do not match the current connection string are no longer corrected automatically. <rdar://problem/35129575>
* Improved computation of available memory on pre-3.14 kernels. <rdar://problem/35336487>
* Stopped reporting blob storage connection credentials in ``fdbbackup`` status output. <rdar://problem/31483629>
Earlier release notes
---------------------
* :doc:`5.0 (API Version 500) </old-release-notes/release-notes-500>`
* :doc:`4.6 (API Version 460) </old-release-notes/release-notes-460>`
* :doc:`4.5 (API Version 450) </old-release-notes/release-notes-450>`
* :doc:`4.4 (API Version 440) </old-release-notes/release-notes-440>`
* :doc:`4.3 (API Version 430) </old-release-notes/release-notes-430>`
* :doc:`4.2 (API Version 420) </old-release-notes/release-notes-420>`
* :doc:`4.1 (API Version 410) </old-release-notes/release-notes-410>`
* :doc:`4.0 (API Version 400) </old-release-notes/release-notes-400>`
* :doc:`3.0 (API Version 300) </old-release-notes/release-notes-300>`
* :doc:`2.0 (API Version 200) </old-release-notes/release-notes-200>`
* :doc:`1.0 (API Version 100) </old-release-notes/release-notes-100>`
* :doc:`Beta 3 (API Version 23) </old-release-notes/release-notes-023>`
* :doc:`Beta 2 (API Version 22) </old-release-notes/release-notes-022>`
* :doc:`Beta 1 (API Version 21) </old-release-notes/release-notes-021>`
* :doc:`Alpha 6 (API Version 16) </old-release-notes/release-notes-016>`
* :doc:`Alpha 5 (API Version 14) </old-release-notes/release-notes-014>`