Skip to content

Commit

Permalink
Merge pull request #16 from IITH-Compilers/MinorChecks
Browse files Browse the repository at this point in the history
Added port retry logic in GrpcCompilerInterface.py
  • Loading branch information
svkeerthy committed Feb 7, 2024
2 parents 9ad1792 + d981531 commit d03a012
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 6 deletions.
31 changes: 27 additions & 4 deletions CompilerInterface/GrpcCompilerInterface.py
Expand Up @@ -17,6 +17,7 @@
from BaseCompilerInterface import BaseCompilerInterface
import os
import io
import time

import sys
import grpc
Expand Down Expand Up @@ -79,8 +80,30 @@ def start_server(self):
)

self.add_server_method(self.grpc_service_obj, server)
server.add_insecure_port("{}:{}".format(self.host, self.server_port))

server.start()
print("Server Running")
server.wait_for_termination()
retries = 0
max_retries = 30
wait_seconds = 0.2
retry_wait_backoff_exponent = 1.2

while retries < max_retries:
added_port = server.add_insecure_port(
"{}:{}".format(self.host, self.server_port)
)

if str(added_port) == self.server_port:
server.start()
print("Server Running")
server.wait_for_termination()
break
else:
retries += 1
print(
"The port",
self.port,
"is already in use retrying! attempt: ",
retries,
)

time.sleep(wait_seconds)
wait_seconds *= retry_wait_backoff_exponent
5 changes: 3 additions & 2 deletions include/MLModelRunner/gRPCModelRunner.h
Expand Up @@ -198,11 +198,12 @@ class gRPCModelRunner : public MLModelRunner {
retries_wait_secs *= retry_wait_backoff_exponent;
} else {
request->Clear();
if (!status.ok())
if (!status.ok()) {
if (Ctx)
Ctx->emitError("gRPC failed: " + status.error_message());
else
std::cerr << "gRPC failed: " << status.error_message() << std::endl;
}
// auto *action = new int(); // Hard wired for PosetRL case, should be
// fixed *action = response->action(); return action;
return SerDes->deserializeUntyped(response);
Expand Down Expand Up @@ -234,7 +235,7 @@ class gRPCModelRunner : public MLModelRunner {
auto serveFn = [&]() { server->Wait(); };
std::thread serving_thread(serveFn);
auto f = exit_requested->get_future();
// this->requestExit();
this->requestExit();
f.wait();
server->Shutdown();
serving_thread.join();
Expand Down

0 comments on commit d03a012

Please sign in to comment.