diff --git a/src/config/api-server/utils.py b/src/config/api-server/utils.py index 84f204e0dc2..2e7d146f818 100644 --- a/src/config/api-server/utils.py +++ b/src/config/api-server/utils.py @@ -125,11 +125,11 @@ def parse_args(args_str): parser.add_argument( "--ifmap_server_port", help="Port of ifmap server") parser.add_argument( - "--ifmap_queue_size", help="Size of the queue that holds pending " - "messages to be sent to ifmap server") + "--ifmap_queue_size", type=int, help="Size of the queue that holds " + "pending messages to be sent to ifmap server") parser.add_argument( - "--ifmap_max_message_size", help="Maximum size of message sent to " - "ifmap server") + "--ifmap_max_message_size", type=int, help="Maximum size of message " + "sent to ifmap server") # TODO should be from certificate parser.add_argument( diff --git a/src/config/api-server/vnc_cfg_ifmap.py b/src/config/api-server/vnc_cfg_ifmap.py index cc57badb490..eba831e9ed7 100644 --- a/src/config/api-server/vnc_cfg_ifmap.py +++ b/src/config/api-server/vnc_cfg_ifmap.py @@ -220,25 +220,26 @@ def _ifmap_dequeue_task(self): self.config_log(tb, level=SandeshLevel.SYS_ERROR) def _publish_to_ifmap_dequeue(self): - while self._queue.peek(): + while True: + (oper, oper_body, do_trace) = self._queue.get() publish_discovery = False requests = [] requests_len = 0 traces = [] while True: + if oper == 'publish_discovery': + publish_discovery = True + break + if do_trace: + trace = self._generate_ifmap_trace(oper, oper_body) + traces.append(trace) + requests.append(oper_body) + requests_len += len(oper_body) + if (requests_len > + self._get_api_server()._args.ifmap_max_message_size): + break try: (oper, oper_body, do_trace) = self._queue.get_nowait() - if oper == 'publish_discovery': - publish_discovery = True - break - if do_trace: - trace = self._generate_ifmap_trace(oper, oper_body) - traces.append(trace) - requests.append(oper_body) - requests_len += len(oper_body) - if (requests_len > - self._get_api_server()._args.ifmap_max_message_size): - break except Empty: break ok = True