Merge pull request #1453 from etschannen/release-6.1

do not log a SevError trace event if we cannot deserialize the connect packet
This commit is contained in:
Vishesh Yadav 2019-04-10 18:19:44 -07:00 committed by GitHub
commit 0159e073bb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 66 additions and 25 deletions

View File

@ -10,38 +10,38 @@ macOS
The macOS installation package is supported on macOS 10.7+. It includes the client and (optionally) the server.
* `FoundationDB-6.1.1.pkg <https://www.foundationdb.org/downloads/6.1.1/macOS/installers/FoundationDB-6.1.1.pkg>`_
* `FoundationDB-6.1.2.pkg <https://www.foundationdb.org/downloads/6.1.2/macOS/installers/FoundationDB-6.1.2.pkg>`_
Ubuntu
------
The Ubuntu packages are supported on 64-bit Ubuntu 12.04+, but beware of the Linux kernel bug in Ubuntu 12.x.
* `foundationdb-clients-6.1.1-1_amd64.deb <https://www.foundationdb.org/downloads/6.1.1/ubuntu/installers/foundationdb-clients_6.1.1-1_amd64.deb>`_
* `foundationdb-server-6.1.1-1_amd64.deb <https://www.foundationdb.org/downloads/6.1.1/ubuntu/installers/foundationdb-server_6.1.1-1_amd64.deb>`_ (depends on the clients package)
* `foundationdb-clients-6.1.2-1_amd64.deb <https://www.foundationdb.org/downloads/6.1.2/ubuntu/installers/foundationdb-clients_6.1.2-1_amd64.deb>`_
* `foundationdb-server-6.1.2-1_amd64.deb <https://www.foundationdb.org/downloads/6.1.2/ubuntu/installers/foundationdb-server_6.1.2-1_amd64.deb>`_ (depends on the clients package)
RHEL/CentOS EL6
---------------
The RHEL/CentOS EL6 packages are supported on 64-bit RHEL/CentOS 6.x.
* `foundationdb-clients-6.1.1-1.el6.x86_64.rpm <https://www.foundationdb.org/downloads/6.1.1/rhel6/installers/foundationdb-clients-6.1.1-1.el6.x86_64.rpm>`_
* `foundationdb-server-6.1.1-1.el6.x86_64.rpm <https://www.foundationdb.org/downloads/6.1.1/rhel6/installers/foundationdb-server-6.1.1-1.el6.x86_64.rpm>`_ (depends on the clients package)
* `foundationdb-clients-6.1.2-1.el6.x86_64.rpm <https://www.foundationdb.org/downloads/6.1.2/rhel6/installers/foundationdb-clients-6.1.2-1.el6.x86_64.rpm>`_
* `foundationdb-server-6.1.2-1.el6.x86_64.rpm <https://www.foundationdb.org/downloads/6.1.2/rhel6/installers/foundationdb-server-6.1.2-1.el6.x86_64.rpm>`_ (depends on the clients package)
RHEL/CentOS EL7
---------------
The RHEL/CentOS EL7 packages are supported on 64-bit RHEL/CentOS 7.x.
* `foundationdb-clients-6.1.1-1.el7.x86_64.rpm <https://www.foundationdb.org/downloads/6.1.1/rhel7/installers/foundationdb-clients-6.1.1-1.el7.x86_64.rpm>`_
* `foundationdb-server-6.1.1-1.el7.x86_64.rpm <https://www.foundationdb.org/downloads/6.1.1/rhel7/installers/foundationdb-server-6.1.1-1.el7.x86_64.rpm>`_ (depends on the clients package)
* `foundationdb-clients-6.1.2-1.el7.x86_64.rpm <https://www.foundationdb.org/downloads/6.1.2/rhel7/installers/foundationdb-clients-6.1.2-1.el7.x86_64.rpm>`_
* `foundationdb-server-6.1.2-1.el7.x86_64.rpm <https://www.foundationdb.org/downloads/6.1.2/rhel7/installers/foundationdb-server-6.1.2-1.el7.x86_64.rpm>`_ (depends on the clients package)
Windows
-------
The Windows installer is supported on 64-bit Windows XP and later. It includes the client and (optionally) the server.
* `foundationdb-6.1.1-x64.msi <https://www.foundationdb.org/downloads/6.1.1/windows/installers/foundationdb-6.1.1-x64.msi>`_
* `foundationdb-6.1.2-x64.msi <https://www.foundationdb.org/downloads/6.1.2/windows/installers/foundationdb-6.1.2-x64.msi>`_
API Language Bindings
=====================
@ -58,18 +58,18 @@ On macOS and Windows, the FoundationDB Python API bindings are installed as part
If you need to use the FoundationDB Python API from other Python installations or paths, download the Python package:
* `foundationdb-6.1.1.tar.gz <https://www.foundationdb.org/downloads/6.1.1/bindings/python/foundationdb-6.1.1.tar.gz>`_
* `foundationdb-6.1.2.tar.gz <https://www.foundationdb.org/downloads/6.1.2/bindings/python/foundationdb-6.1.2.tar.gz>`_
Ruby 1.9.3/2.0.0+
-----------------
* `fdb-6.1.1.gem <https://www.foundationdb.org/downloads/6.1.1/bindings/ruby/fdb-6.1.1.gem>`_
* `fdb-6.1.2.gem <https://www.foundationdb.org/downloads/6.1.2/bindings/ruby/fdb-6.1.2.gem>`_
Java 8+
-------
* `fdb-java-6.1.1.jar <https://www.foundationdb.org/downloads/6.1.1/bindings/java/fdb-java-6.1.1.jar>`_
* `fdb-java-6.1.1-javadoc.jar <https://www.foundationdb.org/downloads/6.1.1/bindings/java/fdb-java-6.1.1-javadoc.jar>`_
* `fdb-java-6.1.2.jar <https://www.foundationdb.org/downloads/6.1.2/bindings/java/fdb-java-6.1.2.jar>`_
* `fdb-java-6.1.2-javadoc.jar <https://www.foundationdb.org/downloads/6.1.2/bindings/java/fdb-java-6.1.2-javadoc.jar>`_
Go 1.1+
-------

View File

@ -113,6 +113,7 @@ Fixes only impacting 6.1.0+
---------------------------
* The ``consistencycheck`` fdbserver role would repeatedly exit. [6.1.1] `(PR #1437) <https://github.com/apple/foundationdb/pull/1437>`_
* The ``consistencycheck`` fdbserver role could proceed at a very slow rate after inserting data into an empty database. [6.1.2] `(PR #1452) <https://github.com/apple/foundationdb/pull/1452>`_
Earlier release notes
---------------------

View File

@ -251,7 +251,11 @@ struct ConnectPacket {
template <class Ar>
void serialize(Ar& ar) {
serializer(ar, connectPacketLength);
ASSERT(connectPacketLength <= sizeof(ConnectPacket));
if(connectPacketLength > sizeof(ConnectPacket) - sizeof(connectPacketLength)) {
ASSERT(!g_network->isSimulated());
throw serialization_failed();
}
serializer(ar, protocolVersion, canonicalRemotePort, connectionId, canonicalRemoteIp4);
if (ar.isDeserializing && ar.protocolVersion() < 0x0FDB00B061030001LL) {
flags = 0;

View File

@ -70,6 +70,7 @@ set(FLOW_SRCS
network.cpp
network.h
serialize.h
serialize.cpp
stacktrace.amalgamation.cpp
stacktrace.h
version.cpp)

View File

@ -62,8 +62,9 @@ ERROR( database_locked, 1038, "Database is locked" )
ERROR( cluster_version_changed, 1039, "The protocol version of the cluster has changed" )
ERROR( external_client_already_loaded, 1040, "External client has already been loaded" )
ERROR( lookup_failed, 1041, "DNS lookup failed" )
ERROR( proxy_memory_limit_exceeded, 1042, "Proxy commit memory limit exceeded")
ERROR( shutdown_in_progress, 1043, "Operation no longer supported due to shutdown")
ERROR( proxy_memory_limit_exceeded, 1042, "Proxy commit memory limit exceeded" )
ERROR( shutdown_in_progress, 1043, "Operation no longer supported due to shutdown" )
ERROR( serialization_failed, 1044, "Failed to deserialize an object" )
ERROR( broken_promise, 1100, "Broken promise" )
ERROR( operation_cancelled, 1101, "Asynchronous operation cancelled" )

View File

@ -46,6 +46,7 @@
<ClCompile Include="UnitTest.cpp" />
<ClCompile Include="version.cpp" />
<ClCompile Include="SignalSafeUnwind.cpp" />
<ClCompile Include="serialize.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="CompressedInt.h" />

View File

@ -35,6 +35,7 @@
<ClCompile Include="version.cpp" />
<ClCompile Include="stacktrace.amalgamation.cpp" />
<ClCompile Include="SignalSafeUnwind.cpp" />
<ClCompile Include="serialize.cpp" />
<ClCompile Include="XmlTraceLogFormatter.cpp" />
<ClCompile Include="FileTraceLogWriter.cpp" />
</ItemGroup>

40
flow/serialize.cpp Normal file
View File

@ -0,0 +1,40 @@
/*
* serialize.cpp
*
* This source file is part of the FoundationDB open source project
*
* Copyright 2013-2019 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.
*/
#include "flow/serialize.h"
#include "flow/network.h"
_AssumeVersion::_AssumeVersion( uint64_t version ) : v(version) {
if( version < minValidProtocolVersion ) {
ASSERT(!g_network->isSimulated());
throw serialization_failed();
}
}
const void* BinaryReader::readBytes( int bytes ) {
const char* b = begin;
const char* e = b + bytes;
if( e > end ) {
ASSERT(!g_network->isSimulated());
throw serialization_failed();
}
begin = e;
return b;
}

View File

@ -261,9 +261,7 @@ struct _IncludeVersion {
};
struct _AssumeVersion {
uint64_t v;
explicit _AssumeVersion( uint64_t version ) : v(version) {
ASSERT( version >= minValidProtocolVersion );
}
explicit _AssumeVersion( uint64_t version );
template <class Ar> void write( Ar& ar ) { ar.setProtocolVersion(v); }
template <class Ar> void read( Ar& ar ) { ar.setProtocolVersion(v); }
};
@ -546,13 +544,7 @@ public:
static const int isDeserializing = 1;
typedef BinaryReader READER;
const void* readBytes( int bytes ) {
const char* b = begin;
const char* e = b + bytes;
ASSERT( e <= end );
begin = e;
return b;
}
const void* readBytes( int bytes );
const void* peekBytes( int bytes ) {
ASSERT( begin + bytes <= end );