mirror of
https://github.com/vale981/ray
synced 2025-03-06 02:21:39 -05:00
Patch redis-py bug for Windows (#8386)
This commit is contained in:
parent
a3b95d4664
commit
ac1ed293e3
3 changed files with 27 additions and 2 deletions
|
@ -1505,7 +1505,6 @@ genrule(
|
||||||
name = "redis",
|
name = "redis",
|
||||||
srcs = [
|
srcs = [
|
||||||
] + select({
|
] + select({
|
||||||
# Windows is not supported yet, so make stubs for it
|
|
||||||
"@bazel_tools//src/conditions:windows": [
|
"@bazel_tools//src/conditions:windows": [
|
||||||
"@com_github_tporadowski_redis_bin//file",
|
"@com_github_tporadowski_redis_bin//file",
|
||||||
],
|
],
|
||||||
|
@ -1519,7 +1518,6 @@ genrule(
|
||||||
"redis-cli",
|
"redis-cli",
|
||||||
],
|
],
|
||||||
cmd = select({
|
cmd = select({
|
||||||
# Windows is not supported yet, so make stubs for it
|
|
||||||
"@bazel_tools//src/conditions:windows": """
|
"@bazel_tools//src/conditions:windows": """
|
||||||
unzip -q -o -- $(location @com_github_tporadowski_redis_bin//file) redis-server.exe redis-cli.exe &&
|
unzip -q -o -- $(location @com_github_tporadowski_redis_bin//file) redis-server.exe redis-cli.exe &&
|
||||||
mv -f -- redis-server.exe $(location redis-server) &&
|
mv -f -- redis-server.exe $(location redis-server) &&
|
||||||
|
|
|
@ -30,6 +30,10 @@ thirdparty_files = os.path.join(
|
||||||
os.path.abspath(os.path.dirname(__file__)), "thirdparty_files")
|
os.path.abspath(os.path.dirname(__file__)), "thirdparty_files")
|
||||||
sys.path.insert(0, thirdparty_files)
|
sys.path.insert(0, thirdparty_files)
|
||||||
|
|
||||||
|
if sys.platform == "win32":
|
||||||
|
import ray.compat # noqa: E402
|
||||||
|
ray.compat.patch_redis_empty_recv()
|
||||||
|
|
||||||
# Expose ray ABI symbols which may be dependent by other shared
|
# Expose ray ABI symbols which may be dependent by other shared
|
||||||
# libraries such as _streaming.so. See BUILD.bazel:_raylet
|
# libraries such as _streaming.so. See BUILD.bazel:_raylet
|
||||||
python_shared_lib_suffix = ".so" if sys.platform != "win32" else ".pyd"
|
python_shared_lib_suffix = ".so" if sys.platform != "win32" else ".pyd"
|
||||||
|
|
23
python/ray/compat.py
Normal file
23
python/ray/compat.py
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
import errno
|
||||||
|
import socket
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
def patch_redis_empty_recv():
|
||||||
|
"""On Windows, socket disconnect result in errors rather than empty reads.
|
||||||
|
redis-py does not handle these errors correctly.
|
||||||
|
This patch translates connection resets to empty reads as in POSIX.
|
||||||
|
"""
|
||||||
|
assert sys.platform == "win32"
|
||||||
|
import redis
|
||||||
|
|
||||||
|
def redis_recv(sock, *args, **kwargs):
|
||||||
|
result = b""
|
||||||
|
try:
|
||||||
|
result = redis._compat.recv(sock, *args, **kwargs)
|
||||||
|
except socket.error as ex:
|
||||||
|
if ex.errno not in [errno.ECONNRESET, errno.ECONNREFUSED]:
|
||||||
|
raise
|
||||||
|
return result
|
||||||
|
|
||||||
|
redis.connection.recv = redis_recv
|
Loading…
Add table
Reference in a new issue