Merge branch '2_6_14_rebase' into 2.8.4
This commit is contained in:
Vendored
+3
-3
@@ -156,9 +156,9 @@ redisAsyncContext *redisAsyncConnect(const char *ip, int port) {
|
||||
struct sockaddr_in sa;
|
||||
redisContext *c = redisPreConnectNonBlock(ip, port, &sa);
|
||||
redisAsyncContext *ac = redisAsyncInitialize(c);
|
||||
if (aeWinSocketConnect(c->fd, (struct sockaddr *)&sa, sizeof(sa)) != 0) {
|
||||
c->err = errno;
|
||||
strerror_r(errno,c->errstr,sizeof(c->errstr));
|
||||
if (aeWinSocketConnect(ac->c.fd, (struct sockaddr *)&sa, sizeof(sa)) != 0) {
|
||||
ac->c.err = errno;
|
||||
strerror_r(errno,ac->c.errstr,sizeof(ac->c.errstr));
|
||||
}
|
||||
__redisAsyncCopyError(ac);
|
||||
return ac;
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>$(OutDir)redis-check-aof$(TargetExt)</OutputFile>
|
||||
<AdditionalDependencies>ws2_32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<IgnoreSpecificDefaultLibraries>MSVCRT</IgnoreSpecificDefaultLibraries>
|
||||
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
|
||||
@@ -79,7 +79,7 @@
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<OutputFile>$(OutDir)redis-check-aof$(TargetExt)</OutputFile>
|
||||
<AdditionalDependencies>ws2_32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>$(OutDir)redis-cli$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>$(OutDir);$(OutDir)lib</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>hiredis.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<IgnoreSpecificDefaultLibraries>MSVCRT</IgnoreSpecificDefaultLibraries>
|
||||
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
|
||||
@@ -81,7 +81,7 @@
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<OutputFile>$(OutDir)redis-cli$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>$(OutDir);$(OutDir)lib</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>hiredis.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
@@ -103,6 +103,9 @@
|
||||
<ProjectReference Include="..\..\src\Win32_Interop\Win32_Interop.vcxproj">
|
||||
<Project>{8c07f811-c81c-432c-b334-1ae6faecf951}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\hiredis\hiredis.vcxproj">
|
||||
<Project>{13e85053-54b3-487b-8ddb-3430b1c1b3bf}</Project>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<AdditionalLibraryDirectories>$(OutDir);$(OutDir)lib</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>lua.lib;hiredis.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;advapi32.lib;shell32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;advapi32.lib;shell32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
|
||||
<IgnoreSpecificDefaultLibraries>MSVCRT.lib</IgnoreSpecificDefaultLibraries>
|
||||
@@ -82,7 +82,7 @@
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalLibraryDirectories>$(OutDir);$(OutDir)lib</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>lua.lib;hiredis.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;advapi32.lib;shell32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;advapi32.lib;shell32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
|
||||
</Link>
|
||||
@@ -170,6 +170,12 @@
|
||||
<ProjectReference Include="..\src\Win32_Interop\Win32_Interop.vcxproj">
|
||||
<Project>{8c07f811-c81c-432c-b334-1ae6faecf951}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="hiredis\hiredis.vcxproj">
|
||||
<Project>{13e85053-54b3-487b-8ddb-3430b1c1b3bf}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="lua\lua\lua.vcxproj">
|
||||
<Project>{170b0909-5f75-467f-9501-c99dec16c6dc}</Project>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
|
||||
+1
-1
@@ -45,7 +45,7 @@ void setLogFile(const char* logFileName)
|
||||
free((void*)logFile);
|
||||
logFile = NULL;
|
||||
}
|
||||
logFile = (char*)malloc(strlen(logFile));
|
||||
logFile = (char*)malloc(strlen(logFileName));
|
||||
if (logFile==NULL) {
|
||||
redisLog(REDIS_WARNING, "memory allocation failure");
|
||||
return;
|
||||
|
||||
@@ -257,6 +257,7 @@ BOOL QForkMasterInit() {
|
||||
0, sizeof(QForkControl),
|
||||
NULL);
|
||||
if (g_hQForkControlFileMap == NULL) {
|
||||
printf( "Problem with CreateFileMapping\n");
|
||||
errno = EBADF;
|
||||
goto err;
|
||||
}
|
||||
@@ -267,6 +268,7 @@ BOOL QForkMasterInit() {
|
||||
0, 0,
|
||||
0);
|
||||
if (g_pQForkControl == NULL) {
|
||||
printf( "Problem with MapViewOfFile\n");
|
||||
errno = ENOMEM;
|
||||
goto err;
|
||||
}
|
||||
@@ -274,6 +276,7 @@ BOOL QForkMasterInit() {
|
||||
// This must be called only once per process! Calling it more times than that will not recreate existing
|
||||
// section, and dlmalloc will ultimately fail with an access violation. Once is good.
|
||||
if (dlmallopt(M_GRANULARITY, cAllocationGranularity) == 0) {
|
||||
printf( "DLMalloc failed initializing allocation granularity.\n");
|
||||
errno = ENOMEM;
|
||||
goto err;
|
||||
}
|
||||
@@ -286,6 +289,7 @@ BOOL QForkMasterInit() {
|
||||
SIZE_T maxPhysicalMapping = ms.ullTotalPhys - cSystemReserve;
|
||||
g_pQForkControl->availableBlocksInHeap = (int)(maxPhysicalMapping / cAllocationGranularity);
|
||||
if (g_pQForkControl->availableBlocksInHeap <= 0) {
|
||||
printf( "Not enough physical memory to initialize Redis. Physical memory must be greater than 3GB.\n");
|
||||
errno = ENOMEM;
|
||||
goto err;
|
||||
}
|
||||
@@ -308,6 +312,7 @@ BOOL QForkMasterInit() {
|
||||
FILE_ATTRIBUTE_NORMAL| FILE_FLAG_DELETE_ON_CLOSE,
|
||||
NULL );
|
||||
if (g_pQForkControl->heapMemoryMapFile == INVALID_HANDLE_VALUE) {
|
||||
printf( "Problem creating memory mapped file.\n");
|
||||
errno = EBADF;
|
||||
goto err;
|
||||
}
|
||||
@@ -322,6 +327,7 @@ BOOL QForkMasterInit() {
|
||||
LODWORD(mmSize),
|
||||
NULL);
|
||||
if (g_pQForkControl->heapMemoryMap == NULL) {
|
||||
printf( "Problem mapping heap.\n");
|
||||
errno = EBADF;
|
||||
goto err;
|
||||
}
|
||||
@@ -336,6 +342,7 @@ BOOL QForkMasterInit() {
|
||||
MEM_RESERVE | MEM_COMMIT | MEM_TOP_DOWN,
|
||||
PAGE_READWRITE);
|
||||
if (pHigh == NULL) {
|
||||
printf( "Viirtual memory reservation failed.\n");
|
||||
DWORD err = GetLastError();
|
||||
errno = ENOMEM;
|
||||
goto err;
|
||||
@@ -354,6 +361,7 @@ BOOL QForkMasterInit() {
|
||||
0,
|
||||
pHigh);
|
||||
if (g_pQForkControl->heapStart == NULL) {
|
||||
printf( "Mapping view of heap failed.\n");
|
||||
DWORD err = GetLastError();
|
||||
errno = ENOMEM;
|
||||
goto err;
|
||||
@@ -395,6 +403,12 @@ BOOL QForkMasterInit() {
|
||||
return TRUE;
|
||||
|
||||
err:
|
||||
printf( "Error ocurred initializing Redis.");
|
||||
if( GetLastError() != 0 ) {
|
||||
printf( " GetLastError() returns 0x%08x", GetLastError());
|
||||
}
|
||||
printf( "\n");
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
@@ -84,6 +84,24 @@ pid_t wait3(int *stat_loc, int options, void *rusage) {
|
||||
REDIS_NOTUSED(stat_loc);
|
||||
REDIS_NOTUSED(options);
|
||||
REDIS_NOTUSED(rusage);
|
||||
//JEP: BUGBUG
|
||||
// http://linux.die.net/man/2/wait3 says:
|
||||
// "wait3(status, options, rusage); is equivalent to: waitpid(-1, status, options); "
|
||||
//
|
||||
// http://linux.die.net/man/2/waitpid says:
|
||||
// "The value of pid can be:
|
||||
// < -1 meaning wait for any child process whose process group ID is equal to the absolute value of pid.
|
||||
// -1 meaning wait for any child process.
|
||||
// 0 meaning wait for any child process whose process group ID is equal to that of the calling process.
|
||||
// > 0 meaning wait for the child whose process ID is equal to the value of pid."
|
||||
//
|
||||
// On Windows waitpid evaluates to _cwait, so the -1 passed referrs to the current process. Thus it will never signal.
|
||||
//
|
||||
// Since windows parent->child relationships are unreliable (process ids are recycled leading to unexpected PID relationships),
|
||||
// the hiredis mechanism of process signaling will have to be changed. It should be using process handles on Windows.
|
||||
|
||||
|
||||
|
||||
return (pid_t) waitpid((intptr_t) -1, 0, WAIT_FLAGS);
|
||||
}
|
||||
|
||||
|
||||
@@ -173,6 +173,9 @@ void loadServerConfigFromString(char *config) {
|
||||
err = "Invalid log level. Must be one of debug, notice, warning";
|
||||
goto loaderr;
|
||||
}
|
||||
#ifdef _WIN32
|
||||
setLogVerbosityLevel(server.verbosity);
|
||||
#endif
|
||||
} else if (!strcasecmp(argv[0],"logfile") && argc == 2) {
|
||||
FILE *logfp;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user