This is an automated email from the ASF dual-hosted git repository.
laiyingchun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-pegasus.git
The following commit(s) were added to refs/heads/master by this push:
new 5cfba5569 feat(FQDN): Add host_port structures for clients and bump
actions/checkout from v3 to v4 (#2062)
5cfba5569 is described below
commit 5cfba55694dede03dee92ae1a35a29d5972efb72
Author: Yingchun Lai <[email protected]>
AuthorDate: Fri Jul 12 21:33:23 2024 +0800
feat(FQDN): Add host_port structures for clients and bump actions/checkout
from v3 to v4 (#2062)
After All GitHub Actions run on Node20 instead of Node16 by default [1],
this patch bumps the actions/checkout version from v3 to v4.
When the related yaml files changed, the clients CIs are triggered, then
they expose that the new introduced structure `host_port` in IDL as unknow
because it is not generated by thrift automatically, we have to implement
it manually. So this patch also simplily implements the `host_port`
structure in python-client and nodejs-client.
It should be mentioned that only the `build_debug_on_centos7` is still using
`actions/checkout@v3`, see [2] for details.
1.
https://github.blog/changelog/2024-03-07-github-actions-all-actions-will-run-on-node20-instead-of-node16-by-default/
2. https://github.com/apache/incubator-pegasus/pull/2065
---
.github/workflows/build-push-env-docker.yml | 2 +-
.github/workflows/labeler.yml | 2 +-
.github/workflows/lint_and_test_admin-cli.yml | 4 +-
.github/workflows/lint_and_test_collector.yml | 6 +-
.github/workflows/lint_and_test_cpp.yaml | 22 +++----
.github/workflows/lint_and_test_go-client.yml | 8 +--
.github/workflows/lint_and_test_java-client.yml | 6 +-
.github/workflows/lint_and_test_pegic.yml | 4 +-
.github/workflows/lint_and_test_scala-client.yml | 10 ++--
.github/workflows/regular-build.yml | 8 +--
.github/workflows/standardization_lint.yaml | 6 +-
.github/workflows/test_nodejs-client.yml | 4 +-
.github/workflows/test_python-client.yml | 4 +-
.github/workflows/thirdparty-regular-push.yml | 10 ++--
nodejs-client/src/dsn/dsn_types.js | 36 ++++++++++++
python-client/pypegasus/base/ttypes.py | 75 ++++++++++++++++++++++--
python-client/pypegasus/pgclient.py | 22 +++----
17 files changed, 166 insertions(+), 63 deletions(-)
diff --git a/.github/workflows/build-push-env-docker.yml
b/.github/workflows/build-push-env-docker.yml
index 1bf695e7e..cdb88e96b 100644
--- a/.github/workflows/build-push-env-docker.yml
+++ b/.github/workflows/build-push-env-docker.yml
@@ -44,7 +44,7 @@ jobs:
- centos7
steps:
- name: Checkout
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml
index eb13a2db7..a34014547 100644
--- a/.github/workflows/labeler.yml
+++ b/.github/workflows/labeler.yml
@@ -27,7 +27,7 @@ jobs:
name: Module Labeler
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Assign GitHub labels
uses: actions/labeler@v4
with:
diff --git a/.github/workflows/lint_and_test_admin-cli.yml
b/.github/workflows/lint_and_test_admin-cli.yml
index 788ba8ba3..4fef441bf 100644
--- a/.github/workflows/lint_and_test_admin-cli.yml
+++ b/.github/workflows/lint_and_test_admin-cli.yml
@@ -41,7 +41,7 @@ jobs:
name: Lint
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v2
with:
@@ -57,7 +57,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v2
with:
diff --git a/.github/workflows/lint_and_test_collector.yml
b/.github/workflows/lint_and_test_collector.yml
index e21ede1a8..6fc8308c2 100644
--- a/.github/workflows/lint_and_test_collector.yml
+++ b/.github/workflows/lint_and_test_collector.yml
@@ -43,7 +43,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v2
with:
@@ -60,7 +60,7 @@ jobs:
runs-on: ubuntu-20.04
steps:
- name: Checkout
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Set up Go
@@ -80,7 +80,7 @@ jobs:
runs-on: ubuntu-20.04
steps:
- name: Checkout
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Set up Go
diff --git a/.github/workflows/lint_and_test_cpp.yaml
b/.github/workflows/lint_and_test_cpp.yaml
index 1fcd505c7..799263566 100644
--- a/.github/workflows/lint_and_test_cpp.yaml
+++ b/.github/workflows/lint_and_test_cpp.yaml
@@ -53,7 +53,7 @@ jobs:
name: Lint
runs-on: ubuntu-22.04
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: clang-format
run: ./scripts/run-clang-format.py --clang-format-executable
clang-format-14 -e ./src/shell/linenoise -e ./src/shell/sds -e ./thirdparty -r .
@@ -66,7 +66,7 @@ jobs:
container:
image: apache/pegasus:thirdparties-bin-ubuntu2204-${{ github.base_ref }}
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Free Disk Space (Ubuntu)
run: |
.github/workflows/free_disk_space.sh
@@ -97,7 +97,7 @@ jobs:
image: apache/pegasus:thirdparties-bin-test-ubuntu2204-${{
github.base_ref }}
steps:
- name: Clone code
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- name: Rebuild thirdparty if needed
uses: "./.github/actions/rebuild_thirdparty_if_needed"
- name: Build Pegasus
@@ -162,7 +162,7 @@ jobs:
image: apache/pegasus:thirdparties-bin-test-ubuntu2204-${{
github.base_ref }}
options: --cap-add=SYS_PTRACE
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Download artifact
uses: "./.github/actions/download_artifact"
- name: Run server tests
@@ -179,7 +179,7 @@ jobs:
container:
image: apache/pegasus:thirdparties-bin-test-ubuntu2204-${{
github.base_ref }}
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Rebuild thirdparty if needed
uses: "./.github/actions/rebuild_thirdparty_if_needed"
- name: Build Pegasus
@@ -246,7 +246,7 @@ jobs:
image: apache/pegasus:thirdparties-bin-test-ubuntu2204-${{
github.base_ref }}
options: --cap-add=SYS_PTRACE
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Download artifact
uses: "./.github/actions/download_artifact"
- name: Run server tests
@@ -266,7 +266,7 @@ jobs:
# container:
# image: apache/pegasus:thirdparties-bin-test-ubuntu2204-${{
github.base_ref }}
# steps:
-# - uses: actions/checkout@v3
+# - uses: actions/checkout@v4
# - name: Rebuild thirdparty if needed
# uses: "./.github/actions/rebuild_thirdparty_if_needed"
# - name: Build Pegasus
@@ -329,7 +329,7 @@ jobs:
# image: apache/pegasus:thirdparties-bin-test-ubuntu2204-${{
github.base_ref }}
# options: --cap-add=SYS_PTRACE
# steps:
-# - uses: actions/checkout@v3
+# - uses: actions/checkout@v4
# - name: Download artifact
# uses: "./.github/actions/download_artifact"
# - name: Run server tests
@@ -346,7 +346,7 @@ jobs:
container:
image: apache/pegasus:thirdparties-bin-test-jemallc-ubuntu2204-${{
github.base_ref }}
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Rebuild thirdparty if needed
uses: "./.github/actions/rebuild_thirdparty_if_needed"
# TODO(yingchun): Append "-m dsn_utils_tests" to the command if not
needed to pack server or tools, for example, the dependencies are static linked.
@@ -370,7 +370,7 @@ jobs:
image: apache/pegasus:thirdparties-bin-test-jemallc-ubuntu2204-${{
github.base_ref }}
options: --cap-add=SYS_PTRACE
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Download artifact
uses: "./.github/actions/download_artifact"
- name: Run server tests
@@ -386,7 +386,7 @@ jobs:
# Preinstalled softwares:
https://github.com/actions/virtual-environments/blob/main/images/macos/macos-12-Readme.md
brew install ccache
brew install [email protected]
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Setup cache
uses: actions/cache@v3
with:
diff --git a/.github/workflows/lint_and_test_go-client.yml
b/.github/workflows/lint_and_test_go-client.yml
index 4e02501f1..691121b0f 100644
--- a/.github/workflows/lint_and_test_go-client.yml
+++ b/.github/workflows/lint_and_test_go-client.yml
@@ -45,7 +45,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v2
with:
@@ -66,7 +66,7 @@ jobs:
- name: Install thrift
run: sudo apt-get install -y thrift-compiler
- name: Checkout
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v2
with:
@@ -91,7 +91,7 @@ jobs:
container:
image: apache/pegasus:thirdparties-bin-test-ubuntu2204-${{
github.base_ref }}
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- uses: "./.github/actions/rebuild_thirdparty_if_needed"
- uses: "./.github/actions/build_pegasus"
- uses: "./.github/actions/upload_artifact"
@@ -118,7 +118,7 @@ jobs:
make install
cd - && rm -rf thrift-${THRIFT_VERSION} v${THRIFT_VERSION}.tar.gz
- name: Checkout
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v2
with:
diff --git a/.github/workflows/lint_and_test_java-client.yml
b/.github/workflows/lint_and_test_java-client.yml
index b71d1e021..6d172bd91 100644
--- a/.github/workflows/lint_and_test_java-client.yml
+++ b/.github/workflows/lint_and_test_java-client.yml
@@ -39,7 +39,7 @@ jobs:
name: Spotless
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- uses: actions/setup-java@v1
with:
java-version: 8
@@ -58,7 +58,7 @@ jobs:
container:
image: apache/pegasus:thirdparties-bin-test-ubuntu2204-${{
github.base_ref }}
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Rebuild thirdparty if needed
uses: "./.github/actions/rebuild_thirdparty_if_needed"
- name: Build Pegasus
@@ -79,7 +79,7 @@ jobs:
matrix:
java: [ '8', '11']
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- uses: actions/cache@v2
with:
path: ~/.m2/repository
diff --git a/.github/workflows/lint_and_test_pegic.yml
b/.github/workflows/lint_and_test_pegic.yml
index 3788b4412..da94f9b4a 100644
--- a/.github/workflows/lint_and_test_pegic.yml
+++ b/.github/workflows/lint_and_test_pegic.yml
@@ -41,7 +41,7 @@ jobs:
name: Lint
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: golangci-lint
uses: golangci/golangci-lint-action@v3
with:
@@ -53,7 +53,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v2
with:
diff --git a/.github/workflows/lint_and_test_scala-client.yml
b/.github/workflows/lint_and_test_scala-client.yml
index b261902e7..29925d051 100644
--- a/.github/workflows/lint_and_test_scala-client.yml
+++ b/.github/workflows/lint_and_test_scala-client.yml
@@ -39,7 +39,7 @@ jobs:
name: Format
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- uses: actions/setup-java@v1
with:
java-version: 8
@@ -57,7 +57,7 @@ jobs:
container:
image: apache/pegasus:thirdparties-bin-test-ubuntu2204-${{
github.base_ref }}
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- uses: "./.github/actions/rebuild_thirdparty_if_needed"
- uses: "./.github/actions/build_pegasus"
- uses: "./.github/actions/upload_artifact"
@@ -73,7 +73,7 @@ jobs:
matrix:
java: [ '8', '11']
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- uses: actions/cache@v2
with:
path: ~/.m2/repository
@@ -89,9 +89,9 @@ jobs:
source /github/home/.sdkman/bin/sdkman-init.sh
sdk install sbt
sbt -V
- - name: Recompile thrift
+ - name: Download thrift
working-directory: ./java-client/scripts
- run: ./recompile_thrift.sh
+ run: ./download_thrift.sh
- name: Build Java client
working-directory: ./java-client
run: |
diff --git a/.github/workflows/regular-build.yml
b/.github/workflows/regular-build.yml
index d4c3fb182..4bc36a32c 100644
--- a/.github/workflows/regular-build.yml
+++ b/.github/workflows/regular-build.yml
@@ -39,7 +39,7 @@ jobs:
name: Lint Cpp
runs-on: ubuntu-22.04
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: clang-format
run: ./scripts/run-clang-format.py --clang-format-executable
clang-format-14 -e ./src/shell/linenoise -e ./src/shell/sds -e ./thirdparty -r .
@@ -70,7 +70,7 @@ jobs:
working-directory: /root/incubator-pegasus
steps:
- name: Clone Apache Pegasus Source
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- name: Unpack prebuilt third-parties
uses: "./.github/actions/unpack_prebuilt_thirdparties"
- name: Build Pegasus
@@ -85,7 +85,7 @@ jobs:
# to generate code as well. The thrift-compiler version on
ubuntu-20.04 is 0.13.0
run: sudo apt-get install -y thrift-compiler
- name: Checkout
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v2
with:
@@ -128,7 +128,7 @@ jobs:
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- uses: actions/setup-java@v1
with:
java-version: ${{ matrix.java }}
diff --git a/.github/workflows/standardization_lint.yaml
b/.github/workflows/standardization_lint.yaml
index 66bcd1627..a88f13e66 100644
--- a/.github/workflows/standardization_lint.yaml
+++ b/.github/workflows/standardization_lint.yaml
@@ -47,14 +47,14 @@ jobs:
name: Check Markdown links
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- uses: gaurav-nelson/[email protected]
dockerfile_linter:
name: Lint Dockerfile
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- uses: hadolint/[email protected]
with:
recursive: true
@@ -65,7 +65,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- name: Check License Header
uses: apache/skywalking-eyes@main
env:
diff --git a/.github/workflows/test_nodejs-client.yml
b/.github/workflows/test_nodejs-client.yml
index 371263e80..e662e2458 100644
--- a/.github/workflows/test_nodejs-client.yml
+++ b/.github/workflows/test_nodejs-client.yml
@@ -46,7 +46,7 @@ jobs:
container:
image: apache/pegasus:thirdparties-bin-test-ubuntu2204-${{
github.base_ref }}
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- uses: "./.github/actions/rebuild_thirdparty_if_needed"
- uses: "./.github/actions/build_pegasus"
- uses: "./.github/actions/upload_artifact"
@@ -58,7 +58,7 @@ jobs:
container:
image: apache/pegasus:thirdparties-bin-test-ubuntu2204-${{
github.base_ref }}
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Install nodejs
uses: actions/setup-node@v3
with:
diff --git a/.github/workflows/test_python-client.yml
b/.github/workflows/test_python-client.yml
index c1eaaa7b7..f846be60f 100644
--- a/.github/workflows/test_python-client.yml
+++ b/.github/workflows/test_python-client.yml
@@ -46,7 +46,7 @@ jobs:
container:
image: apache/pegasus:thirdparties-bin-test-ubuntu2204-${{
github.base_ref }}
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- uses: "./.github/actions/rebuild_thirdparty_if_needed"
- uses: "./.github/actions/build_pegasus"
- uses: "./.github/actions/upload_artifact"
@@ -58,7 +58,7 @@ jobs:
container:
image: apache/pegasus:thirdparties-bin-test-ubuntu2204-${{
github.base_ref }}
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'
diff --git a/.github/workflows/thirdparty-regular-push.yml
b/.github/workflows/thirdparty-regular-push.yml
index 59d0430ea..a4ea74665 100644
--- a/.github/workflows/thirdparty-regular-push.yml
+++ b/.github/workflows/thirdparty-regular-push.yml
@@ -43,7 +43,7 @@ jobs:
build_push_src_docker_images:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
@@ -78,7 +78,7 @@ jobs:
- ubuntu2204
- centos7
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
@@ -114,7 +114,7 @@ jobs:
- ubuntu2204
- centos7
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
@@ -148,7 +148,7 @@ jobs:
osversion:
- ubuntu2204
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
@@ -184,7 +184,7 @@ jobs:
osversion:
- ubuntu2204
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
diff --git a/nodejs-client/src/dsn/dsn_types.js
b/nodejs-client/src/dsn/dsn_types.js
index 46eb508ff..4f2ef0a6f 100644
--- a/nodejs-client/src/dsn/dsn_types.js
+++ b/nodejs-client/src/dsn/dsn_types.js
@@ -256,6 +256,41 @@ rpc_address.prototype.equals = function(other){
return false;
};
+// TODO(yingchun): host_port is now just a place holder and not well
implemented, need improve it
+var host_port_type = {
+ HOST_TYPE_INVALID : 0,
+ HOST_TYPE_IPV4 : 1,
+ HOST_TYPE_GROUP : 2
+};
+
+var host_port = function(args) {
+ this.host = null;
+ this.port = 0;
+ this.type = host_port_type.HOST_TYPE_INVALID;
+ if(args && args.host){
+ this.host = args.host;
+ }
+ if(args && args.port){
+ this.port = args.port;
+ }
+ if(args && args.type){
+ this.type = args.type;
+ }
+};
+
+host_port.prototype = {};
+host_port.prototype.read = function(input){
+ this.host = input.readBinary();
+ this.port = input.readI16();
+ this.type = input.readByte();
+};
+
+host_port.prototype.write = function(output){
+ output.writeBinary(this.host);
+ output.writeI16(this.port);
+ output.writeByte(this.type);
+};
+
//value, calculate by app_id and partition index
var gpid = function(args) {
this.value = 0;
@@ -298,6 +333,7 @@ module.exports = {
error_code : error_code,
task_code : task_code,
rpc_address : rpc_address,
+ host_port : host_port,
gpid : gpid,
};
diff --git a/python-client/pypegasus/base/ttypes.py
b/python-client/pypegasus/base/ttypes.py
index def909a0d..6ed2e88de 100644
--- a/python-client/pypegasus/base/ttypes.py
+++ b/python-client/pypegasus/base/ttypes.py
@@ -265,13 +265,13 @@ class rpc_address:
def is_valid(self):
return self.address == 0
- def from_string(self, host_port):
- host, port = host_port.split(':')
- self.address = socket.ntohl(struct.unpack("I", socket.inet_aton(host))[0])
+ def from_string(self, ip_port):
+ ip, port = ip_port.split(':')
+ self.address = socket.ntohl(struct.unpack("I", socket.inet_aton(ip))[0])
self.address = (self.address << 32) + (int(port) << 16) + 1 # TODO why
+ 1?
return True
- def to_host_port(self):
+ def to_ip_port(self):
s = []
address = self.address
port = (address >> 16) & 0xFFFF
@@ -305,6 +305,73 @@ class rpc_address:
def __ne__(self, other):
return not (self == other)
+
+# TODO(yingchun): host_port is now just a place holder and not well
implemented, need improve it
+class host_port_types(Enum):
+ kHostTypeInvalid = 0
+ kHostTypeIpv4 = 1
+ kHostTypeGroup = 2
+
+
+class host_port:
+
+ thrift_spec = (
+ (1, TType.STRING, 'host', None, None, ), # 1
+ (2, TType.I16, 'port', None, None, ), # 2
+ (3, TType.I08, 'type', None, None, ), # 3
+ )
+
+ def __init__(self):
+ self.host = ""
+ self.port = 0
+ self.type = host_port_types.kHostTypeInvalid
+
+ def is_valid(self):
+ return self.type != host_port_types.kHostTypeInvalid
+
+ def from_string(self, host_port_str):
+ host_and_port = host_port_str.split(':')
+ if len(host_and_port) != 2:
+ return False
+ self.host = host_and_port[0]
+ self.port = int(host_and_port[1])
+ # TODO(yingchun): Maybe it's not true, improve it
+ self.type = host_port_types.kHostTypeIpv4
+ return True
+
+ def to_host_port(self):
+ if not self.is_valid():
+ return None, None
+ return self.host, self.port
+
+ def read(self, iprot):
+ self.host = iprot.readString()
+ self.port = iprot.readI16()
+ self.type = iprot.readByte()
+
+ def write(self, oprot):
+ oprot.writeString(self.host)
+ oprot.writeI16(self.port)
+ oprot.writeByte(self.type)
+
+ def validate(self):
+ return
+
+ def __hash__(self):
+ return hash(self.host) ^ self.port ^ self.type
+
+ def __repr__(self):
+ L = ['%s=%r' % (key, value)
+ for key, value in self.__dict__.items()]
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+ def __eq__(self, other):
+ return other.__class__.__name__ == "host_port" and self.__dict__ ==
other.__dict__
+
+ def __ne__(self, other):
+ return not (self == other)
+
+
class gpid:
thrift_spec = (
diff --git a/python-client/pypegasus/pgclient.py
b/python-client/pypegasus/pgclient.py
index 457e99c8a..2438483ba 100644
--- a/python-client/pypegasus/pgclient.py
+++ b/python-client/pypegasus/pgclient.py
@@ -249,12 +249,12 @@ class MetaSessionManager(SessionManager):
def add_meta_server(self, meta_addr):
rpc_addr = rpc_address()
if rpc_addr.from_string(meta_addr):
- host_port_list = meta_addr.split(':')
- if not len(host_port_list) == 2:
+ ip_port = meta_addr.split(':')
+ if not len(ip_port) == 2:
return False
- host, port = host_port_list[0], int(host_port_list[1])
- self.addr_list.append((host, port))
+ ip, port = ip_port[0], int(ip_port[1])
+ self.addr_list.append((ip, port))
return True
else:
@@ -281,9 +281,9 @@ class MetaSessionManager(SessionManager):
def query(self):
ds = []
- for (host, port) in self.addr_list:
+ for (ip, port) in self.addr_list:
rpc_addr = rpc_address()
- rpc_addr.from_string(host + ':' + str(port))
+ rpc_addr.from_string(ip + ':' + str(port))
if rpc_addr in self.session_dict:
self.session_dict[rpc_addr].close()
@@ -294,7 +294,7 @@ class MetaSessionManager(SessionManager):
None,
self,
self.timeout
- ).connectTCP(host, port, self.timeout)
+ ).connectTCP(ip, port, self.timeout)
d.addCallbacks(self.got_conn, self.got_err)
d.addCallbacks(self.query_one, self.got_err)
ds.append(d)
@@ -345,7 +345,7 @@ class Table(SessionManager):
if rpc_addr in connected_rpc_addrs or rpc_addr.address == 0:
continue
- host, port = rpc_addr.to_host_port()
+ ip, port = rpc_addr.to_ip_port()
if rpc_addr in self.session_dict:
self.session_dict[rpc_addr].close()
@@ -356,7 +356,7 @@ class Table(SessionManager):
None,
self.container,
self.timeout
- ).connectTCP(host, port, self.timeout)
+ ).connectTCP(ip, port, self.timeout)
connected_rpc_addrs[rpc_addr] = 1
d.addCallbacks(self.got_conn, self.got_err)
ds.append(d)
@@ -642,8 +642,8 @@ class Pegasus(object):
self.table = Table(table_name, self, timeout)
self.meta_session_manager = MetaSessionManager(table_name, timeout)
if isinstance(meta_addrs, list):
- for host_port in meta_addrs:
- self.meta_session_manager.add_meta_server(host_port)
+ for meta_addr in meta_addrs:
+ self.meta_session_manager.add_meta_server(meta_addr)
PegasusHash.populate_table()
self.timeout_times = 0
self.update_partition = False
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]