Skip to content

Commit

Permalink
[backend] fix metrics crash for empty uuid (#220)
Browse files Browse the repository at this point in the history
* fix script bug

* fix bug

* update
  • Loading branch information
phoenix-xhuang committed Jan 19, 2022
1 parent cfb5fd3 commit 7a0aab6
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 12 deletions.
9 changes: 5 additions & 4 deletions ymir/backend/src/ymir-controller/controller/server.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,16 +105,17 @@ def main(main_args: Any) -> int:

# start metrics manager
metrics_config = server_config['METRICS']
manager = metrics.MetricsManager(permission_pass=metrics_config['allow_feedback'],
uuid=metrics_config['anonymous_uuid'],
metrics_permission_pass = metrics_config['allow_feedback'] or False
metrics_uuid = metrics_config['anonymous_uuid'] or 'anonymous_uuid'
manager = metrics.MetricsManager(permission_pass=metrics_permission_pass,
uuid=metrics_uuid,
server_host=metrics_config['server_host'],
server_port=metrics_config['server_port'])
manager.send_counter('init.start')

# start grpc server
port = server_config['SERVICE']['port']
mc_service_impl = MirControllerService(sandbox_root=sandbox_root,
assets_config=server_config['ASSETS'])
mc_service_impl = MirControllerService(sandbox_root=sandbox_root, assets_config=server_config['ASSETS'])
server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
backend_pb2_grpc.add_mir_controller_serviceServicer_to_server(mc_service_impl, server)
server.add_insecure_port("[::]:{}".format(port))
Expand Down
15 changes: 7 additions & 8 deletions ymir/backend/src/ymir-controller/controller/utils/metrics.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,20 +11,19 @@
@singleton.singleton
class MetricsManager:
def __init__(self, permission_pass: bool, uuid: str, server_host: str, server_port: str) -> None:
logging.info(f'Metrics init: perm-{permission_pass} uuid-{uuid} host-{server_host} port-{server_port}')
self._permission_pass = permission_pass
if not self._permission_pass:
return
if not uuid or not server_host or not server_port:
raise RuntimeError("MetricsManager not initialized.")
# _permission_pass indicates whether the permession is granted to record task metrics.
self._permission_pass = permission_pass
self._uuid = uuid
self._server_host = server_host
self._server_port = int(server_port)
self._client = None
logging.info(f'Metrics init: perm-{permission_pass} uuid-{uuid} host-{server_host} port-{server_port}')

if self._permission_pass:
self._client = statsd.StatsClient(host=self._server_host,
port=self._server_port,
prefix=f"ymir_metrics.{self._uuid}")
self._client = statsd.StatsClient(host=self._server_host,
port=self._server_port,
prefix=f"ymir_metrics.{self._uuid}")

def send_counter(self, content: str) -> None:
if not self._permission_pass:
Expand Down

0 comments on commit 7a0aab6

Please sign in to comment.