diff --git a/src/config/api-server/utils.py b/src/config/api-server/utils.py index 7aa3e561304..579834770ce 100644 --- a/src/config/api-server/utils.py +++ b/src/config/api-server/utils.py @@ -124,11 +124,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 1e54b07f0b0..8a038ea0307 100644 --- a/src/config/api-server/vnc_cfg_ifmap.py +++ b/src/config/api-server/vnc_cfg_ifmap.py @@ -219,25 +219,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