Compare commits

...

10 Commits

Author SHA1 Message Date
tporadowski
017dc989f1 version 4.0.14.2
- fix for #50 - running in Sentinel mode
2020-01-26 23:26:07 +01:00
tporadowski
b51c4e7eb3 added release notes 2020-01-26 23:22:45 +01:00
tporadowski
bfcdb550bb enhanced ReleasePackagingTool
- added command-line arguments parser
- support for "-n" that updates source file with new version
2020-01-26 11:36:09 +01:00
tporadowski
9077429e29 removed obsolete *.docx from packaging tool 2020-01-24 15:14:31 +01:00
tporadowski
19c036fe16 removing obsolete documentation delivered with MSI
- MS Open Tech documentation is no longer up-to-date and should
  not be delivered with MSI installer, will be replaced with
  a README.txt that informs about this fork
2020-01-23 13:27:47 +01:00
Tomasz Poradowski
a5cd8f4860 Merge pull request #51 from tporadowski/issue-50
added missing sentinel subcommand
2020-01-22 23:11:42 +01:00
tporadowski
054be3a6ae added missing sentinel subcommand
- "deny-scripts-reconfig" was not recognized in conf file due to missing mapping
2020-01-22 23:09:23 +01:00
Tomasz Poradowski
fd77bb01a6 avoid using unintialized variable
fixes #47
2020-01-15 21:50:38 +01:00
tporadowski
286389b403 Redis for Windows 4.0.14.1 2020-01-15 21:04:42 +01:00
Tomasz Poradowski
5a40a37c23 workaround for issue #46
- in Windows prior to 8 and Server 2012 there is no GetSystemTimePreciseAsFileTime(), so in case of
  very fast forking - we take 100ms for calculation of "stat_fork_rate"
- fixes #46
2019-12-28 13:00:53 +01:00
20 changed files with 293 additions and 57 deletions

4
.gitignore vendored
View File

@@ -36,7 +36,9 @@ deps/lua/src/liblua.a
*.exe
*.sdf
*.suo
msvs/ReleasePackagingTool
msvs/ReleasePackagingTool/bin/
msvs/ReleasePackagingTool/obj/
msvs/ReleasePackagingTool/packages/
msvs/ipch
msvs/RedisServer.opensdf
!msvs/RedisWaInst/bin/*

73
RELEASENOTES.txt Normal file
View File

@@ -0,0 +1,73 @@
Redis for Windows - https://github.com/tporadowski/redis
========================================================
This file provides information about Windows-specific changes to Redis.
For release notes related to original Redis project - please see 00-RELEASENOTES.
--------------------------------------------------------
2020-01-26: Redis 4.0.14.2 for Windows
https://github.com/tporadowski/redis/releases/tag/v4.0.14.2
This is a hotfix release of 4.0.14 branch that fixes #50 related to running in
Sentinel mode.
--------------------------------------------------------
2020-01-15: Redis 4.0.14.1 for Windows
https://github.com/tporadowski/redis/releases/tag/v4.0.14.1
This is a hotfix release of 4.0.14 branch that fixes 2 Windows-specific issues:
* #46 - added support for older Windows versions (prior Windows 8 and Windows Server 2012)
* #47 - fixed problem with parsing command-line arguments.
--------------------------------------------------------
2019-08-29: Redis 4.0.14 for Windows
https://github.com/tporadowski/redis/releases/tag/v4.0.14
Redis 4.0.14 for Windows is a merge of Windows-specific changes from latest (unsupported) 3.2.100 release from MSOpenTech and original Redis 4.0.14.
--------------------------------------------------------
2018-10-01: Redis for Windows 4.0.2.3 (alpha)
This 4.0.2.3 release is still an alpha version, but contains enhancements and fixes for:
* #14: decrease logging verbosity of some cluster-related messages
* #23: ZRANK/ZREVRANK bugfix (win-port only)
* failed unit tests (bdcf80e).
--------------------------------------------------------
2018-03-26: Redis for Windows 4.0.2.2 (alpha)
https://github.com/tporadowski/redis/releases/tag/v4.0.2.2-alpha
This 4.0.2.2 release is still an alpha version, but contains a fix to issue #12
(crash when rewriting AOF file - this issue was specific to Windows port only).
--------------------------------------------------------
2018-03-17: Redis for Windows 4.0.2.1 (alpha)
https://github.com/tporadowski/redis/releases/tag/v4.0.2.1-alpha
This 4.0.2.1 release is still an alpha version, but contains a fix to issue #11,
which was related to sending back larger amounts of data to Redis clients
(this issue was specific to Windows port only).
--------------------------------------------------------
2017-11-22: Redis 4.0.2 for Windows (alpha)
https://github.com/tporadowski/redis/releases/tag/v4.0.2-alpha
Alpha version of Redis 4.0.2 for Windows.
Redis 4.0.2 for Windows is a merge of Windows-specific changes from latest (unsupported) 3.2.100 release
from MSOpenTech and Redis 4.0.2 and this alpha release consists of:
* all Redis 4.0.2 features except modules,
* all executables of Redis (redis-server, redis-cli, redis-benchmark, redis-check-aof, redis-check-rdb).
Main difference to official Redis 4.0.2 (except no support for modules at the moment) is old version
of jemalloc-win dependency, which is planned to be updated to the same version in beta release.

View File

@@ -1,5 +1,6 @@
Copyright (c) 2006-2015, Salvatore Sanfilippo
Copyright (c) 2006-2020, Salvatore Sanfilippo
Modifications copyright (c) Microsoft Open Technologies, Inc.
Modifications copyright (c) Tomasz Poradowski
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
@@ -8,4 +9,8 @@ Redistribution and use in source and binary forms, with or without modification,
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
* Neither the name of Redis nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Binary file not shown.

View File

@@ -0,0 +1,16 @@
using CommandLine;
namespace ReleasePackagingTool
{
class CmdLineOptions
{
[Option('n', "new-version", HelpText = "Prepares new version")]
public string PrepareNewVersion { get; set; }
[Option('p', "root-path", HelpText = "Root path to project folder")]
public string RootPath { get; set; }
[Option('s', "skip-package", HelpText = "When true skips preparing the package")]
public bool SkipPackage { get; set; }
}
}

View File

@@ -1,8 +1,11 @@
using System;
using CommandLine;
using System;
using System.Collections.Generic;
using System.IO;
using System.IO.Compression;
using System.Reflection;
using System.Text;
using System.Text.RegularExpressions;
namespace ReleasePackagingTool
{
@@ -10,8 +13,13 @@ namespace ReleasePackagingTool
{
#region Private Fields
private static string rootPath;
private static string versionReplacementText = "CurrentRedisVersion";
private readonly string rootPath;
private const string versionReplacementText = "CurrentRedisVersion";
public Program(string rootPath)
{
this.rootPath = rootPath;
}
#endregion Private Fields
@@ -21,18 +29,33 @@ namespace ReleasePackagingTool
{
try
{
Program p = new Program();
Parser.Default.ParseArguments<CmdLineOptions>(args).WithParsed(cmdLineOptions =>
{
string assemblyDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
var rootPath = cmdLineOptions.RootPath ?? Path.GetFullPath(Path.Combine(assemblyDirectory, @"..\..\..\..\..\"));
string assemblyDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
rootPath = Path.GetFullPath(Path.Combine(assemblyDirectory, @"..\..\..\..\..\"));
Program p = new Program(rootPath);
string version;
version = p.GetRedisVersion();
p.UpdateNuSpecFiles(version);
p.BuildReleasePackage(version, "x64");
if (!string.IsNullOrWhiteSpace(cmdLineOptions.PrepareNewVersion))
{
p.PrepareNewVersion(cmdLineOptions.PrepareNewVersion);
}
Console.Write("Release packaging complete.");
Environment.ExitCode = 0;
if (!cmdLineOptions.SkipPackage)
{
var version = p.GetRedisVersion();
p.UpdateNuSpecFiles(version);
p.BuildReleasePackage(version, "x64");
Console.Write("Release packaging complete.");
}
else
{
Console.WriteLine("Creation of release package skipped.");
}
Environment.ExitCode = 0;
});
}
catch (Exception ex)
{
@@ -43,16 +66,16 @@ namespace ReleasePackagingTool
private void BuildReleasePackage(string version, string platform)
{
string releasePackageDir = Path.Combine(rootPath, @"msvs\BuildRelease\Redis-" + version + @"\");
string releasePackageDir = GetTargetPath(@"msvs\BuildRelease\Redis-" + version + @"\");
if (Directory.Exists(releasePackageDir) == false)
{
Directory.CreateDirectory(releasePackageDir);
}
string releasePackagePath = Path.Combine(rootPath, releasePackageDir + "Redis-" + platform + "-" + version + ".zip");
string releasePackagePath = GetTargetPath(releasePackageDir + "Redis-" + platform + "-" + version + ".zip");
ForceFileErase(releasePackagePath);
string executablesRoot = Path.Combine(rootPath, @"msvs\" + platform + @"\Release");
string executablesRoot = GetTargetPath(@"msvs\" + platform + @"\Release");
List<Tuple<string /*source*/, string /*target name*/>> executableNames = new List<Tuple<string, string>>()
{
Tuple.Create("redis-benchmark.exe", "redis-benchmark.exe"),
@@ -73,15 +96,18 @@ namespace ReleasePackagingTool
{
"EventLog.dll"
};
string documentsRoot = Path.Combine(rootPath, @"msvs\setups\documentation");
List<string> docuementNames = new List<string>()
string documentsRoot = GetTargetPath(@"msvs\setups\documentation");
List<string> documentNames = new List<string>()
{
"Redis on Windows.docx",
"Redis on Windows Release Notes.docx",
"Windows Service Documentation.docx",
"README.txt",
"redis.windows.conf",
"redis.windows-service.conf"
};
List<string> releaseNotes = new List<string>()
{
"RELEASENOTES.txt",
"00-RELEASENOTES"
};
using (ZipArchive archive = ZipFile.Open(releasePackagePath, ZipArchiveMode.Create))
{
@@ -97,10 +123,14 @@ namespace ReleasePackagingTool
{
archive.CreateEntryFromFile(Path.Combine(executablesRoot, dependencyName), dependencyName);
}
foreach (string documentName in docuementNames)
foreach (string documentName in documentNames)
{
archive.CreateEntryFromFile(Path.Combine(documentsRoot, documentName), documentName);
}
foreach (string notes in releaseNotes)
{
archive.CreateEntryFromFile(Path.Combine(rootPath, notes), notes);
}
}
}
@@ -130,9 +160,19 @@ namespace ReleasePackagingTool
}
}
private string GetTargetPath(string filePath)
{
if (Path.IsPathRooted(filePath))
{
return filePath;
}
return Path.Combine(rootPath, filePath);
}
private string GetRedisVersion()
{
TextReader tr = File.OpenText(Path.Combine(rootPath, @"src\version.h"));
TextReader tr = File.OpenText(GetTargetPath(@"src\version.h"));
string line = tr.ReadLine();
int start = line.IndexOf('\"');
int last = line.LastIndexOf('\"');
@@ -141,15 +181,63 @@ namespace ReleasePackagingTool
private void UpdateNuSpecFiles(string version)
{
string chocTemplate = Path.Combine(rootPath, @"msvs\setups\chocolatey\template\redis.nuspec.template");
string chocDocument = Path.Combine(rootPath, @"msvs\setups\chocolatey\redis.nuspec");
string chocTemplate = GetTargetPath(@"msvs\setups\chocolatey\template\redis.nuspec.template");
string chocDocument = GetTargetPath(@"msvs\setups\chocolatey\redis.nuspec");
CreateTextFileFromTemplate(chocTemplate, chocDocument, versionReplacementText, version);
string nugetTemplate = Path.Combine(rootPath, @"msvs\setups\nuget\template\redis.nuspec.template");
string nugetDocument = Path.Combine(rootPath, @"msvs\setups\nuget\redis.nuspec");
string nugetTemplate = GetTargetPath(@"msvs\setups\nuget\template\redis.nuspec.template");
string nugetDocument = GetTargetPath(@"msvs\setups\nuget\redis.nuspec");
CreateTextFileFromTemplate(nugetTemplate, nugetDocument, versionReplacementText, version);
}
/// <summary>
/// Updates some source files that keep track of current Redis for Windows version
/// with newly provided <paramref name="prepareNewVersion"/>.
/// </summary>
/// <param name="prepareNewVersion">New version</param>
private void PrepareNewVersion(string prepareNewVersion)
{
Console.WriteLine("Preparing new version: " + prepareNewVersion);
//update src/version.h
File.WriteAllText(GetTargetPath(@"src\version.h"), $"#define REDIS_VERSION \"{prepareNewVersion}\"\r\n", System.Text.Encoding.ASCII);
//update msvs/RedisForWindows.rc
var rcFilePath = GetTargetPath(@"msvs\RedisForWindows.rc");
var rcLines = File.ReadAllLines(rcFilePath);
var versionWithCommas = prepareNewVersion.Replace('.', ',');
for (int i = 0, j = rcLines.Length; i < j; i++)
{
var line = rcLines[i];
if (line.IndexOf("FILEVERSION", StringComparison.InvariantCultureIgnoreCase) > -1
|| line.IndexOf("PRODUCTVERSION", StringComparison.InvariantCultureIgnoreCase) > -1) {
rcLines[i] = Regex.Replace(line, @"(?<optname>FILEVERSION|PRODUCTVERSION)\s+[1-9][0-9,]+", "${optname} " + versionWithCommas);
rcLines[i] = Regex.Replace(rcLines[i], @"VALUE ""(?<optname>FileVersion|ProductVersion)"", ""[1-9]+[0-9.]+""", "VALUE \"${optname}\", \"" + prepareNewVersion + "\"");
}
}
File.WriteAllLines(rcFilePath, rcLines, Encoding.ASCII);
//update Product.wxs
var wxsPath = GetTargetPath(@"msvs\msi\RedisMsi\Product.wxs");
var wxsLines = File.ReadAllLines(wxsPath, Encoding.UTF8);
for (int i = 0, j = wxsLines.Length; i < j; i++)
{
var line = wxsLines[i];
if (line.Contains("Version=\""))
{
wxsLines[i] = Regex.Replace(line, "\"[1-9][0-9.]+\"", $"\"{prepareNewVersion}\"");
break;
}
}
File.WriteAllLines(wxsPath, wxsLines, Encoding.UTF8);
}
#endregion Private Methods
}
}

View File

@@ -55,6 +55,9 @@
<StartupObject>ReleasePackagingTool.Program</StartupObject>
</PropertyGroup>
<ItemGroup>
<Reference Include="CommandLine, Version=2.7.82.0, Culture=neutral, PublicKeyToken=5a870481e358d379, processorArchitecture=MSIL">
<HintPath>packages\CommandLineParser.2.7.82\lib\net45\CommandLine.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.IO.Compression" />
@@ -66,11 +69,13 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="CmdLineOptions.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.5">

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="CommandLineParser" version="2.7.82" targetFramework="net45" />
</packages>

View File

@@ -10,19 +10,18 @@
<Component Id="cmp_Redis_Windows_Conf" Guid="*">
<File Name="redis.windows.conf" />
</Component>
<Component Id="cmp_Redis_on_Windows_Release_NotesDOCX" Guid="*">
<File Name="Redis on Windows Release Notes.docx" />
</Component>
<Component Id="cmp_Redis_on_WindowsDOCX" Guid="*">
<File Name="Redis on Windows.docx" />
</Component>
<Component Id="cmp_Windows_Service_DocumentationDOCX" Guid="*">
<File Name="Windows Service Documentation.docx" />
</Component>
</ComponentGroup>
</Fragment>
<ComponentGroup Id="ReleaseNotesComponents" Directory="INSTALLFOLDER" Source="!(wix.RootFolder)">
<Component Id="cmp_RELEASENOTES_txt" Guid="*">
<File Name="RELEASENOTES.txt" />
</Component>
<Component Id="cmp_00_RELEASENOTES" Guid="*">
<File Name="00-RELEASENOTES" />
</Component>
</ComponentGroup>
</Fragment>
</Wix>

View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"
xmlns:fw="http://schemas.microsoft.com/wix/FirewallExtension">
@@ -21,7 +21,7 @@
<Product Id="*"
Name="Redis on Windows"
Language="1033"
Version="4.0.14"
Version="4.0.14.2"
Manufacturer="Poradowski.com"
UpgradeCode="{05410198-7212-4FC4-B7C8-AFEFC3DA0FBC}">
<Package InstallerVersion="200"
@@ -55,8 +55,9 @@
<WixVariable Id="WixUIDialogBmp" Value="Images/redis_background.jpg"/>
<WixVariable Id="WixUIBannerBmp" Value="Images/top_banner.jpg"/>
<WixVariable Id="DocumentationFolder" Value="..\..\setups\documentation"/>
<WixVariable Id="RootFolder" Value="..\..\.."/>
<!--Link in custom actions, referencing one will pull in all-->
<!--Link in custom actions, referencing one will pull in all-->
<CustomActionRef Id="ca_UpdateRedisConfig"/>
<!--Features-->
@@ -65,6 +66,7 @@
<ComponentGroupRef Id="SymbolsComponents" />
<ComponentGroupRef Id="WindowsServiceComponents" />
<ComponentGroupRef Id="DocumentationComponents" />
<ComponentGroupRef Id="ReleaseNotesComponents"/>
<ComponentGroupRef Id="SetPathComponents" />
</Feature>
</Product>
@@ -94,4 +96,4 @@
</Directory>
</Directory>
</Fragment>
</Wix>
</Wix>

View File

@@ -3,7 +3,7 @@
<metadata>
<id>redis-64</id>
<title>Redis 64-bit</title>
<version>4.0.14</version>
<version>4.0.14.2</version>
<authors>Alexis Campailla, Enrico Giordani, Jonathan Pickett</authors>
<owners>Microsoft Open Technologies, Inc.</owners>
<description>A porting of Redis on Windows 64-bit.

View File

@@ -0,0 +1,19 @@
Redis for Windows - https://github.com/tporadowski/redis
========================================================
This version of Redis (https://redis.io/) is an unofficial port to Windows OS
based on work contributed by Microsoft Open Technologies Inc. It is maintained
by Tomasz Poradowski (tomasz@poradowski.com, http://www.poradowski.com/en/).
Contents of this package:
- *.exe - various Redis for Windows executables compiled for x64 platfrom,
- *.pdb - accompanying PDB files useful for debugging purposes,
- license.txt - license information (BSD-like),
- RELEASENOTES.txt - Windows-specific release notes,
- 00-RELEASENOTES - changelog of original Redis project, those changes are
ported back to this Windows version.
For more information - please visit https://github.com/tporadowski/redis
If you find this version of Redis useful and would like to support ongoing
development - please consider sponsoring my work at https://github.com/sponsors/tporadowski

View File

@@ -3,7 +3,7 @@
<metadata>
<id>redis-64</id>
<title>Redis 64-bit</title>
<version>4.0.14</version>
<version>4.0.14.2</version>
<authors>Alexis Campailla, Enrico Giordani, Jonathan Pickett</authors>
<owners>Microsoft Open Technologies, Inc.</owners>
<description>A porting of Redis on Windows 64-bit.

View File

@@ -302,7 +302,8 @@ public:
{ "known-sentinel", &fp4 }, // sentinel known-sentinel <name> <ip> <port> [runid]
{ "announce-ip", &fp1 }, // sentinel announce-ip <ip>
{ "announce-port", &fp1 }, // sentinel announce-port <port>
{ "myid", &fp1 } // sentinel myid <id>
{ "myid", &fp1 }, // sentinel myid <id>
{ "deny-scripts-reconfig", &fp1 } // sentinel deny-scripts-reconfig [yes/no]
};
}
@@ -313,7 +314,7 @@ public:
throw invalid_argument(err.str());
}
if (subCommands.find(argv[argStartIndex + 1]) == subCommands.end()) {
err << "Could not find sentinal subcommand " << argv[argStartIndex + 1];
err << "Could not find sentinel subcommand " << argv[argStartIndex + 1];
throw invalid_argument(err.str());
}
@@ -336,7 +337,7 @@ public:
}
string subcommand = tokens.at(startIndex + 1);
if (subCommands.find(subcommand) == subCommands.end()) {
err << "Could not find sentinal subcommand " << subcommand;
err << "Could not find sentinel subcommand " << subcommand;
throw invalid_argument(err.str());
}
@@ -621,7 +622,8 @@ void ParseCommandLineArguments(int argc, char** argv) {
string confFilePath;
for (int n = (confFile ? 2 : 1); n < argc; n++) {
if (string(argv[n]).substr(0, 2) == "--") {
string argument = string(argv[n]).substr(2, argument.length() - 2);
string argumentString = string(argv[n]);
string argument = argumentString.substr(2, argumentString.length() - 2);
transform(argument.begin(), argument.end(), argument.begin(), ::tolower);
// Some -- arguments are passed directly to redis.c::main()

View File

@@ -1489,7 +1489,14 @@ int rewriteAppendOnlyFileBackground(void) {
#endif
/* Parent */
server.stat_fork_time = ustime()-start;
server.stat_fork_rate = (double) (zmalloc_used_memory() * 1000000 / server.stat_fork_time / (1024*1024*1024)); /* GB per second. */ WIN_PORT_FIX
//[tporadowski/redis] issue #46: ustime() -> gettimeofday_highres() uses GetSystemTimePreciseAsFileTime when available (Windows 8, Windows Server 2012) or
// falls back to GetSystemTimeAsFileTime which does not have such high resolution, so "stat_fork_time" may be 0 here
#ifdef _WIN32
if (server.stat_fork_time == 0) {
server.stat_fork_time = 100000; //let's pretend it took 100ms (100000 microseconds)
}
#endif
server.stat_fork_rate = (double)(zmalloc_used_memory() * 1000000 / server.stat_fork_time / (1024 * 1024 * 1024)); /* GB per second. */ WIN_PORT_FIX
latencyAddSampleIfNeeded("fork",server.stat_fork_time/1000);
if (childpid == -1) {
closeChildInfoPipe();

View File

@@ -1127,7 +1127,14 @@ int rdbSaveBackground(char *filename, rdbSaveInfo *rsi) {
#endif
/* Parent */
server.stat_fork_time = ustime()-start;
server.stat_fork_rate = (double) (zmalloc_used_memory() * 1000000 / server.stat_fork_time / (1024*1024*1024)); /* GB per second. */
//[tporadowski/redis] issue #46: ustime() -> gettimeofday_highres() uses GetSystemTimePreciseAsFileTime when available (Windows 8, Windows Server 2012) or
// falls back to GetSystemTimeAsFileTime which does not have such high resolution, so "stat_fork_time" may be 0 here
#ifdef _WIN32
if (server.stat_fork_time == 0) {
server.stat_fork_time = 100000; //let's pretend it took 100ms (100000 microseconds)
}
#endif
server.stat_fork_rate = (double)(zmalloc_used_memory() * 1000000 / server.stat_fork_time / (1024 * 1024 * 1024)); /* GB per second. */ WIN_PORT_FIX
latencyAddSampleIfNeeded("fork",server.stat_fork_time/1000);
if (childpid == -1) {
closeChildInfoPipe();
@@ -2019,7 +2026,14 @@ int rdbSaveToSlavesSockets(rdbSaveInfo *rsi) {
closeChildInfoPipe();
} else {
server.stat_fork_time = ustime()-start;
server.stat_fork_rate = (double) (zmalloc_used_memory() * 1000000 / server.stat_fork_time / (1024*1024*1024)); /* GB per second. */
//[tporadowski/redis] issue #46: ustime() -> gettimeofday_highres() uses GetSystemTimePreciseAsFileTime when available (Windows 8, Windows Server 2012) or
// falls back to GetSystemTimeAsFileTime which does not have such high resolution, so "stat_fork_time" may be 0 here
#ifdef _WIN32
if (server.stat_fork_time == 0) {
server.stat_fork_time = 100000; //let's pretend it took 100ms (100000 microseconds)
}
#endif
server.stat_fork_rate = (double)(zmalloc_used_memory() * 1000000 / server.stat_fork_time / (1024 * 1024 * 1024)); /* GB per second. */ WIN_PORT_FIX
latencyAddSampleIfNeeded("fork",server.stat_fork_time/1000);
serverLog(LL_NOTICE,"Background RDB transfer started by pid %d",

View File

@@ -1 +1 @@
#define REDIS_VERSION "4.0.14"
#define REDIS_VERSION "4.0.14.2"