提交 2277ed0e 编写于 作者: J Jonathan Pickett

Merge branch '2_6_14_rebase' into 2.8.4

......@@ -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">
......
......@@ -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;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册