Skip to content

Commit 0915a56

Browse files
authored
[BUGFIX] Expose the correct external IP of GIE. (#69)
* Check external-ip is null by for loop * Skip checking instance ready when localhost.
1 parent 26d256f commit 0915a56

File tree

6 files changed

+47
-12
lines changed

6 files changed

+47
-12
lines changed

coordinator/gscoordinator/coordinator.py

+15-8
Original file line numberDiff line numberDiff line change
@@ -157,15 +157,22 @@ def __del__(self):
157157
self._cleanup()
158158

159159
def _config_logging(self, log_level):
160-
if log_level:
161-
log_level = getattr(logging, log_level.upper(), logging.INFO)
162-
else:
163-
log_level = logging.INFO
164-
logging.getLogger("graphscope").setLevel(log_level)
165-
logging.basicConfig(
166-
format="%(asctime)s [%(levelname)s][%(module)s:%(lineno)d]: %(message)s",
167-
stream=sys.stdout,
160+
"""Set log level basic on config.
161+
Args:
162+
log_level (str): Log level of stdout handler
163+
"""
164+
logger = logging.getLogger("graphscope")
165+
logger.setLevel(logging.DEBUG)
166+
167+
stdout_handler = logging.StreamHandler(sys.stdout)
168+
stdout_handler.setLevel(log_level)
169+
170+
formatter = logging.Formatter(
171+
"%(asctime)s [%(levelname)s][%(module)s:%(lineno)d]: %(message)s"
168172
)
173+
stdout_handler.setFormatter(formatter)
174+
175+
logger.addHandler(stdout_handler)
169176

170177
def ConnectSession(self, request, context):
171178
# A session is already connected.

coordinator/gscoordinator/template/CMakeLists.template

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
###############################################################################
44

55
project(example C CXX)
6-
cmake_minimum_required(VERSION 2.8)
6+
cmake_minimum_required(VERSION 3.5)
77

88
option(CYTHON_PREGEL_APP "Whether to build cython pregel app." False)
99
option(CYTHON_PIE_APP "Whether to build cython pie app" False)

interactive_engine/deploy/docker/dockerfile/create_maxgraph_instance.sh

+16-1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
# See the License for the specific language governing permissions and
1414
# limitations under the License.
1515
source /root/maxgraph/func.sh
16+
timeout_seconds=60
17+
1618
function _create_maxgraph_instance {
1719
_setup_config
1820
# launch coordinator & frontend in one pod
@@ -67,7 +69,20 @@ function _expose_gremlin_server {
6769
kubectl expose pod ${gremlin_pod} --name=gremlin-${object_id} --port=${external_port} \
6870
--target-port=${port} --type=LoadBalancer 1>/dev/null 2>&1
6971
[ $? -eq 0 ] || exit 1
70-
EXTERNAL_IP=`kubectl describe service gremlin-${object_id} | grep "LoadBalancer Ingress" | awk -F'[ :]+' '{print $3}'`
72+
wait_period_seconds=0
73+
while true
74+
do
75+
EXTERNAL_IP=`kubectl describe service gremlin-${object_id} | grep "LoadBalancer Ingress" | awk -F'[ :]+' '{print $3}'`
76+
if [ -n "${EXTERNAL_IP}" ]; then
77+
break
78+
fi
79+
wait_period_seconds=$(($wait_period_seconds+5))
80+
if [ ${wait_period_seconds} -gt ${timeout_seconds} ];then
81+
echo "Get external ip of ${GREMLIN_EXPOSE} failed."
82+
break
83+
fi
84+
sleep 5
85+
done
7186
else
7287
kubectl expose pod ${gremlin_pod} --name=gremlin-${object_id} --port=${port} \
7388
--target-port=${port} --type=NodePort 1>/dev/null 2>&1

interactive_engine/src/instance-manager/src/main/java/com/alibaba/maxgraph/admin/controller/InstanceManagerController.java

+5
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,11 @@ public CreateInstanceEntity createInstance(@RequestParam("graphName") String gra
161161
}
162162

163163
private boolean checkInstanceReady(String ip, int port) {
164+
if (ip.equals("localhost") || ip.equals("127.0.0.1")) {
165+
// now, used in mac os with docker-desktop kubernetes cluster,
166+
// which external ip is 'localhost' when service type is 'LoadBalancer'.
167+
return true;
168+
}
164169
MessageSerializer serializer = Serializers.GRYO_V1D0.simpleInstance();
165170
Map<String, Object> config = new HashMap<String, Object>() {
166171
{

k8s/graphscope.Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ RUN export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/graphscope/lib:/opt/graphscope/
5757
pip3 install -r requirements.txt -r requirements-dev.txt && \
5858
python3 setup.py bdist_wheel && \
5959
cd ./dist && \
60-
auditwheel repair --plat=manylinux2014_x86_64 ./*.whl && \
60+
auditwheel repair --plat=manylinux2014_x86_64 ./*.whl || true && \
6161
cp ./wheelhouse/* /opt/graphscope/dist/ && \
6262
cd /root/gs/coordinator && \
6363
pip3 install -r requirements.txt -r requirements-dev.txt && \

python/graphscope/deploy/kubernetes/cluster.py

+9-1
Original file line numberDiff line numberDiff line change
@@ -450,7 +450,12 @@ def _waiting_for_services_ready(self):
450450

451451
for pod in pods.items:
452452
self._coordinator_pods_watcher.append(
453-
KubernetesPodWatcher(self._api_client, self._namespace, pod)
453+
KubernetesPodWatcher(
454+
self._api_client,
455+
self._namespace,
456+
pod,
457+
self._coordinator_container_name,
458+
)
454459
)
455460
self._coordinator_pods_watcher[-1].start()
456461

@@ -532,6 +537,9 @@ def _dump_coordinator_failed_status(self):
532537
break
533538
else:
534539
logger.error(message, extra={"simple": True})
540+
else:
541+
for pod_watcher in self._coordinator_pods_watcher:
542+
pod_watcher.stop()
535543

536544
def start(self):
537545
"""Launch graphscope instance on kubernetes cluster.

0 commit comments

Comments
 (0)