← Back to team overview

sts-sponsors team mailing list archive

Re: [Merge] ~ack/maas:websocket-inlinecallbacks into maas:master

 

Review: Approve

+1, some nits inline

Diff comments:

> diff --git a/src/maasserver/websockets/protocol.py b/src/maasserver/websockets/protocol.py
> index 57c5f33..eed8345 100644
> --- a/src/maasserver/websockets/protocol.py
> +++ b/src/maasserver/websockets/protocol.py
> @@ -265,27 +247,30 @@ class WebSocketProtocol(Protocol):
>                  return handledMessages
>          return handledMessages
>  
> +    @inlineCallbacks
>      def handleRequest(self, message, msg_type=MSG_TYPE.REQUEST):
>          """Handle the request message."""
>          # Get the required request_id.
>          request_id = self.getMessageField(message, "request_id")
>          if request_id is None:
> -            return None
> +            returnValue(None)
> +            return
>  
>          if msg_type == MSG_TYPE.PING:
>              self.sequence_number += 1
> -            return defer.succeed(
> -                self.sendResult(
> -                    request_id=request_id,
> -                    result=self.sequence_number,
> -                    msg_type=MSG_TYPE.PING_REPLY,
> -                )
> +            self.sendResult(
> +                request_id=request_id,
> +                result=self.sequence_number,
> +                msg_type=MSG_TYPE.PING_REPLY,
>              )
> +            returnValue(None)
> +            return

returnValue() raise an exception, so this return is unreachable

>  
>          # Decode the method to be called.
>          msg_method = self.getMessageField(message, "method")
>          if msg_method is None:
> -            return None
> +            returnValue(None)
> +            return
>          try:
>              handler_name, method = msg_method.split(".", 1)
>          except ValueError:
> @@ -293,7 +278,8 @@ class WebSocketProtocol(Protocol):
>              self.loseConnection(
>                  STATUSES.PROTOCOL_ERROR, "Invalid method formatting."
>              )
> -            return None
> +            returnValue(None)
> +            return

same as above

>  
>          # Create the handler for the call.
>          handler_class = self.factory.getHandler(handler_name)
> @@ -302,15 +288,19 @@ class WebSocketProtocol(Protocol):
>                  STATUSES.PROTOCOL_ERROR,
>                  "Handler %s does not exist." % handler_name,
>              )
> -            return None
> +            returnValue(None)
> +            return

same as above

>  
>          handler = self.buildHandler(handler_class)
> -        d = handler.execute(method, message.get("params", {}))
> -        d.addCallbacks(
> -            partial(self.sendResult, request_id),
> -            partial(self.sendError, request_id, handler, method),
> -        )
> -        return d
> +        try:
> +            result = yield handler.execute(method, message.get("params", {}))
> +        except Exception as error:
> +            self.sendError(request_id, handler, method, error)
> +            returnValue(None)
> +            return

same as above

> +
> +        self.sendResult(request_id, result)
> +        returnValue(None)
>  
>      def _json_encode(self, obj):
>          """Allow byte strings embedded in the 'result' object passed to


-- 
https://code.launchpad.net/~ack/maas/+git/maas/+merge/438520
Your team MAAS Committers is subscribed to branch maas:master.



References