Merge pull request #1471 from AlvinMooreSr/release-6.1-merge

Merge Release 6.1 Into Master
This commit is contained in:
A.J. Beamon 2019-04-23 11:08:21 -07:00 committed by GitHub
commit e0f76edf77
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 113 additions and 42 deletions

View File

@ -1,9 +1,9 @@
FROM ubuntu:15.04
LABEL version=0.0.6
LABEL version=0.0.7
RUN sed -i -e 's/archive.ubuntu.com\|security.ubuntu.com/old-releases.ubuntu.com/g' -e 's/us\.old/old/g' /etc/apt/sources.list && apt-get clean
RUN apt-get update && apt-get --no-install-recommends install -y --force-yes bzip2 ca-certificates=20141019 adduser apt base-files base-passwd bash binutils build-essential cpp cpp-4.9 dpkg dos2unix elfutils fakeroot findutils g++=4:4.9.2-2ubuntu2 g++-4.9=4.9.2-10ubuntu13 gawk=1:4.1.1+dfsg-1 gcc-5-base gcc=4:4.9.2-2ubuntu2 gcc-4.9=4.9.2-10ubuntu13 gcc-4.9-base:amd64=4.9.2-10ubuntu13 gcc-5-base:amd64=5.1~rc1-0ubuntu1 gdb git golang golang-go golang-go-linux-amd64 golang-src grep gzip hostname java-common libasan1 liblsan0 libtsan0 libubsan0 libcilkrts5 libgcc-4.9-dev libstdc++-4.9-dev libgl1-mesa-dri libgl1-mesa-glx libmono-system-xml-linq4.0-cil libmono-system-data-datasetextensions4.0-cil libstdc++-4.9-pic locales login m4 make makedev mawk mono-dmcs npm openjdk-8-jdk passwd python-distlib python-gevent python-greenlet python-html5lib python-minimal python-pip python-pkg-resources python-requests python-setuptools python-six python-urllib3 python-yaml python2.7 python2.7-minimal rpm rpm2cpio ruby ruby2.1 rubygems-integration sed tar texinfo tzdata-java udev unzip util-linux valgrind vim wget golang-go.tools curl sphinx-common gnupg python-dev python3 python3-dev
RUN apt-get update && apt-get --no-install-recommends install -y --force-yes bzip2 ca-certificates=20141019 adduser apt base-files base-passwd bash binutils build-essential cpp cpp-4.9 dpkg dos2unix elfutils fakeroot findutils g++=4:4.9.2-2ubuntu2 g++-4.9=4.9.2-10ubuntu13 gawk=1:4.1.1+dfsg-1 gcc-5-base gcc=4:4.9.2-2ubuntu2 gcc-4.9=4.9.2-10ubuntu13 gcc-4.9-base:amd64=4.9.2-10ubuntu13 gcc-5-base:amd64=5.1~rc1-0ubuntu1 gdb git golang golang-go golang-go-linux-amd64 golang-src grep gzip hostname java-common libasan1 liblsan0 libtsan0 libubsan0 libcilkrts5 libgcc-4.9-dev libstdc++-4.9-dev libgl1-mesa-dri libgl1-mesa-glx libmono-system-xml-linq4.0-cil libmono-system-data-datasetextensions4.0-cil libstdc++-4.9-pic locales login m4 make makedev mawk mono-dmcs npm openjdk-8-jdk passwd python-distlib python-gevent python-greenlet python-html5lib python-minimal python-pip python-pkg-resources python-requests python-setuptools python-six python-urllib3 python-yaml python2.7 python2.7-minimal rpm rpm2cpio ruby ruby2.1 rubygems-integration sed tar texinfo tzdata-java udev unzip util-linux valgrind vim wget golang-go.tools curl sphinx-common gnupg python-dev python3 python3-dev file
RUN adduser --disabled-password --gecos '' fdb && chown -R fdb /opt && chmod -R 0777 /opt

View File

@ -2,14 +2,14 @@ version: "3"
services:
common: &common
image: foundationdb/foundationdb-build:0.0.5
image: foundationdb/foundationdb-build:0.0.7
build-setup: &build-setup
<<: *common
depends_on: [common]
volumes:
- ..:/foundationdb
working_dir: /foundationdb
- ..:/__this_is_some_very_long_name_dir_needed_to_fix_a_bug_with_debug_rpms__/foundationdb
working_dir: /__this_is_some_very_long_name_dir_needed_to_fix_a_bug_with_debug_rpms__/foundationdb
environment:
- MAKEJOBS=1
- BUILD_DIR=./work
@ -26,6 +26,9 @@ services:
build-docs:
<<: *build-setup
volumes:
- ..:/foundationdb
working_dir: /foundationdb
command: bash -c 'make -j "$${MAKEJOBS}" docpackage'
@ -55,7 +58,7 @@ services:
snapshot-cmake: &snapshot-cmake
<<: *build-setup
command: bash -c 'if [ -f CMakeLists.txt ]; then mkdir -p "$${BUILD_DIR}" && cd "$${BUILD_DIR}" && cmake .. && make -j "$${MAKEJOBS}"; fi'
command: bash -c 'if [ -f CMakeLists.txt ]; then mkdir -p "$${BUILD_DIR}" && cd "$${BUILD_DIR}" && cmake -DINSTALL_TARGET=RPM -DFDB_RELEASE=0 -DUSE_VALGRIND=0 /__this_is_some_very_long_name_dir_needed_to_fix_a_bug_with_debug_rpms__/foundationdb && make -j "$${MAKEJOBS}" packages preinstall && cpack; fi'
prb-cmake:
<<: *snapshot-cmake
@ -63,7 +66,7 @@ services:
snapshot-ctest: &snapshot-ctest
<<: *build-setup
command: bash -c 'if [ -f CMakeLists.txt ]; then mkdir -p "$${BUILD_DIR}" && cd "$${BUILD_DIR}" && cmake .. && make -j "$${MAKEJOBS}" && ctest -L fast -j "$${MAKEJOBS}" --output-on-failure; fi'
command: bash -c 'if [ -f CMakeLists.txt ]; then mkdir -p "$${BUILD_DIR}" && cd "$${BUILD_DIR}" && cmake /__this_is_some_very_long_name_dir_needed_to_fix_a_bug_with_debug_rpms__/foundationdb && make -j "$${MAKEJOBS}" && ctest -L fast -j "$${MAKEJOBS}" --output-on-failure; fi'
prb-ctest:
<<: *snapshot-ctest
@ -71,7 +74,7 @@ services:
snapshot-correctness: &snapshot-correctness
<<: *build-setup
command: bash -c 'if [ -f CMakeLists.txt ]; then mkdir -p "$${BUILD_DIR}" && cd "$${BUILD_DIR}" && cmake .. && make -j "$${MAKEJOBS}" && ctest -j "$${MAKEJOBS}" --output-on-failure; fi'
command: bash -c 'if [ -f CMakeLists.txt ]; then mkdir -p "$${BUILD_DIR}" && cd "$${BUILD_DIR}" && cmake /__this_is_some_very_long_name_dir_needed_to_fix_a_bug_with_debug_rpms__/foundationdb && make -j "$${MAKEJOBS}" && ctest -j "$${MAKEJOBS}" --output-on-failure; fi'
prb-correctness:
<<: *snapshot-correctness

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

@ -2,6 +2,14 @@
Release Notes
#############
6.1.2
=====
Fixes
-----
* Consistency check could report inaccurate shard size estimates if there were enough keys with large values and a small number of keys with small values. `(PR #1468) <https://github.com/apple/foundationdb/pull/1468>`_.
6.1.0
=====
@ -40,6 +48,7 @@ Features
* Added ``modify`` command to fdbbackup for modifying parameters of a running backup. `(PR #1237) <https://github.com/apple/foundationdb/pull/1237>`_
* Added ``header`` parameter to blobstore backup URLs for setting custom HTTP headers. `(PR #1237) <https://github.com/apple/foundationdb/pull/1237>`_
* Added the ``maintenance`` command to ``fdbcli``. This command will stop data distribution from moving data away from processes with a specified zoneID. `(PR #1397) <https://github.com/apple/foundationdb/pull/1397>`_
* Added the ``three_data_hall_fallback`` configuration, which can be used to drop storage replicas in a dead data hall. [6.1.1] `(PR #1422) <https://github.com/apple/foundationdb/pull/1422>`_
Performance
-----------
@ -66,6 +75,7 @@ Fixes
* Java: Successful commits and range reads no longer create ``FDBException`` objects, which avoids wasting resources and reduces memory pressure. `(Issue #1235) <https://github.com/apple/foundationdb/issues/1235>`_
* Windows: Fixed a crash when deleting files. `(Issue #1380) <https://github.com/apple/foundationdb/issues/1380>`_ (by KrzysFR)
* Starting a restore on a tag already in-use would hang and the process would eventually run out of memory. `(PR #1394) <https://github.com/apple/foundationdb/pull/1394>`_
* The ``proxy_memory_limit_exceeded`` error was treated as retryable, but ``fdb_error_predicate`` returned that it is not retryable. `(PR #1438) <https://github.com/apple/foundationdb/pull/1438>`_.
Status
------
@ -105,6 +115,13 @@ Other Changes
* Migrated to Boost 1.67. `(PR #1242) <https://github.com/apple/foundationdb/pull/1242>`_
* IPv4 address in trace log filename is no longer zero-padded. `(PR #1157) <https://github.com/apple/foundationdb/pull/1157>`_
* The ``process_behind`` error can now be thrown by clients and is treated as retryable. [6.1.1] `(PR #1438) <https://github.com/apple/foundationdb/pull/1438>`_.
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

@ -190,9 +190,8 @@ ClientKnobs::ClientKnobs(bool randomize) {
}
init(CSI_STATUS_DELAY, 10.0 );
init( CONSISTENCY_CHECK_RATE_LIMIT_MAX, 50e6 );
init( CONSISTENCY_CHECK_RATE_LIMIT_MAX, 50e6 ); // Limit in per sec
init( CONSISTENCY_CHECK_ONE_ROUND_TARGET_COMPLETION_TIME, 7 * 24 * 60 * 60 ); // 7 days
init( CONSISTENCY_CHECK_RATE_WINDOW, 1.0 );
// TLS related
init( CHECK_CONNECTED_COORDINATOR_NUM_DELAY, 1.0 ); if( randomize && BUGGIFY ) CHECK_CONNECTED_COORDINATOR_NUM_DELAY = g_random->random01() * 60.0; // In seconds

View File

@ -182,7 +182,6 @@ public:
int CONSISTENCY_CHECK_RATE_LIMIT_MAX;
int CONSISTENCY_CHECK_ONE_ROUND_TARGET_COMPLETION_TIME;
int CONSISTENCY_CHECK_RATE_WINDOW;
// TLS related
int CHECK_CONNECTED_COORDINATOR_NUM_DELAY;

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

@ -584,7 +584,8 @@ struct ConsistencyCheckWorkload : TestWorkload
std::min(self->rateLimitMax, static_cast<int>(ceil(self->bytesReadInPreviousRound / (float) CLIENT_KNOBS->CONSISTENCY_CHECK_ONE_ROUND_TARGET_COMPLETION_TIME)));
ASSERT(rateLimitForThisRound >= 0 && rateLimitForThisRound <= self->rateLimitMax);
TraceEvent("ConsistencyCheck_RateLimitForThisRound").detail("RateLimit", rateLimitForThisRound);
state Reference<IRateControl> rateLimiter = Reference<IRateControl>( new SpeedLimit(rateLimitForThisRound, CLIENT_KNOBS->CONSISTENCY_CHECK_RATE_WINDOW) );
state Reference<IRateControl> rateLimiter = Reference<IRateControl>( new SpeedLimit(rateLimitForThisRound, 1) );
state double rateLimiterStartTime = now();
state int64_t bytesReadInthisRound = 0;
state double dbSize = 100e12;
@ -706,6 +707,7 @@ struct ConsistencyCheckWorkload : TestWorkload
state int splitBytes = 0;
state int firstKeySampledBytes = 0;
state int sampledKeys = 0;
state int sampledKeysWithProb = 0;
state double shardVariance = 0;
state bool canSplit = false;
state Key lastSampleKey;
@ -906,6 +908,9 @@ struct ConsistencyCheckWorkload : TestWorkload
firstKeySampledBytes += sampleInfo.sampledSize;
sampledKeys++;
if(itemProbability < 1) {
sampledKeysWithProb++;
}
}
}
@ -915,7 +920,14 @@ struct ConsistencyCheckWorkload : TestWorkload
//after requesting each shard, enforce rate limit based on how much data will likely be read
if(rateLimitForThisRound > 0)
{
wait(rateLimiter->getAllowance(totalReadAmount));
wait(rateLimiter->getAllowance(totalReadAmount));
// Set ratelimit to max allowed if current round has been going on for a while
if(now() - rateLimiterStartTime > 1.1 * CLIENT_KNOBS->CONSISTENCY_CHECK_ONE_ROUND_TARGET_COMPLETION_TIME && rateLimitForThisRound != self->rateLimitMax) {
rateLimitForThisRound = self->rateLimitMax;
rateLimiter = Reference<IRateControl>( new SpeedLimit(rateLimitForThisRound, 1) );
rateLimiterStartTime = now();
TraceEvent(SevInfo, "ConsistencyCheck_RateLimitSetMaxForThisRound").detail("RateLimit", rateLimitForThisRound);
}
}
bytesReadInRange += totalReadAmount;
bytesReadInthisRound += totalReadAmount;
@ -981,12 +993,13 @@ struct ConsistencyCheckWorkload : TestWorkload
int estimateError = abs(shardBytes - sampledBytes);
//Only perform the check if there are sufficient keys to get a distribution that should resemble a normal distribution
if(sampledKeys > 30 && estimateError > failErrorNumStdDev * stdDev)
if(sampledKeysWithProb > 30 && estimateError > failErrorNumStdDev * stdDev)
{
double numStdDev = estimateError / sqrt(shardVariance);
TraceEvent("ConsistencyCheck_InaccurateShardEstimate").detail("Min", shardBounds.min.bytes).detail("Max", shardBounds.max.bytes).detail("Estimate", sampledBytes)
.detail("Actual", shardBytes).detail("NumStdDev", numStdDev).detail("Variance", shardVariance).detail("StdDev", stdDev)
.detail("ShardBegin", printable(range.begin)).detail("ShardEnd", printable(range.end)).detail("NumKeys", shardKeys).detail("NumSampledKeys", sampledKeys);
.detail("ShardBegin", printable(range.begin)).detail("ShardEnd", printable(range.end)).detail("NumKeys", shardKeys).detail("NumSampledKeys", sampledKeys)
.detail("NumSampledKeysWithProb", sampledKeysWithProb);
self->testFailure(format("Shard size is more than %f std dev from estimate", failErrorNumStdDev));
}

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 );

View File

@ -32,7 +32,7 @@
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
<Product Name='$(var.Title)'
Id='{1F036D0A-3560-4A5C-BD40-F1B254876257}'
Id='{C7ECCB4E-3522-45E7-BB07-20D873D941E5}'
UpgradeCode='{A95EA002-686E-4164-8356-C715B7F8B1C8}'
Version='$(var.Version)'
Manufacturer='$(var.Manufacturer)'