def record_negative_sla(self, conversation: Gp2gpConversation): self._logger.warning( f":Negative SLA duration for conversation: {conversation.conversation_id()}", extra={ "event": "NEGATIVE_SLA_DETECTED", "conversation_id": conversation.conversation_id(), "final_acknowledgement_time": conversation.effective_final_acknowledgement_time(), "request_completed_time": conversation.effective_request_completed_time(), }, )
def _calculate_sla( conversation: Gp2gpConversation, probe: TransferObservabilityProbe ) -> Optional[timedelta]: final_acknowledgement_time = conversation.effective_final_acknowledgement_time() request_completed_time = conversation.effective_request_completed_time() if final_acknowledgement_time is None: return None sla_duration = final_acknowledgement_time - request_completed_time if sla_duration.total_seconds() < 0: probe.record_negative_sla(conversation) return max(timedelta(0), sla_duration)