openwhisk-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From GitBox <...@apache.org>
Subject [GitHub] [openwhisk] rabbah commented on a change in pull request #4624: Combines active ack and slot release when both are available.
Date Tue, 17 Sep 2019 13:16:59 GMT
rabbah commented on a change in pull request #4624: Combines active ack and slot release when
both are available.
URL: https://github.com/apache/openwhisk/pull/4624#discussion_r325159952
 
 

 ##########
 File path: common/scala/src/main/scala/org/apache/openwhisk/core/connector/Message.scala
 ##########
 @@ -64,43 +64,34 @@ case class ActivationMessage(override val transid: TransactionId,
   def causedBySequence: Boolean = cause.isDefined
 }
 
-object ActivationMessage extends DefaultJsonProtocol {
-
-  def parse(msg: String) = Try(serdes.read(msg.parseJson))
-
-  private implicit val fqnSerdes = FullyQualifiedEntityName.serdes
-  implicit val serdes = jsonFormat11(ActivationMessage.apply)
-}
-
 /**
  * Message that is sent from the invoker to the controller after action is completed or after
slot is free again for
  * new actions.
  */
 abstract class AcknowledegmentMessage(private val tid: TransactionId) extends Message {
   override val transid: TransactionId = tid
-  override def serialize: String = {
-    AcknowledegmentMessage.serdes.write(this).compactPrint
-  }
+  override def serialize: String = AcknowledegmentMessage.serdes.write(this).compactPrint
+  def toJson: JsValue
 }
 
 /**
- * This message is sent from the invoker to the controller, after the slot of an invoker
that has been used by the
- * current action, is free again (after log collection)
+ * This message is sent from an invoker to the controller, after the resource slot in the
invoke, used by the
+ * corresponding activation, is free again (i.e., after log collection). In some cases, the
activation result is
+ * ready and the slot is freed at the same time. In such cases, the completion message carries
the result as well.
+ * This is reflected by the of a Right() `response` and the param `result` is set to true.
+ * In some cases the `result` is true but the response is Left() if the message was too large
for the message bus.
  */
 case class CompletionMessage(override val transid: TransactionId,
-                             activationId: ActivationId,
-                             isSystemError: Boolean,
+                             response: Either[ActivationId, WhiskActivation],
+                             result: Boolean, // true iff the message is a combined active
ack and slot released
 
 Review comment:
   > part of a "system upgrade" documentation?
   
   this project doesn't have any yet - are you proposing we start one? ;)
   
   If we introduce a third type, then new invokers could send messages for the bug fix, but
an old controller would still ignore them (in fact it would be worse since then the slot release
is not recorded)... We could send 2 messages to replicate the split phase notification, but
this is wasteful IMO, but then avoid the compatibility issue for a rolling update.
   
   Do you want this PR to address this?

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

Mime
View raw message