@@ -533,9 +533,7 @@ public void consumeCalculationFailed(Message<String> msg, ComputationType comput
533
533
LOGGER .error (e .toString ());
534
534
} finally {
535
535
if (receiverObj != null ) {
536
- if (computationType == LOAD_FLOW ) {
537
- networkModificationTreeService .unblockNodeTree (receiverObj .getRootNetworkUuid (), receiverObj .getNodeUuid ());
538
- }
536
+ handleUnblockNode (receiverObj , computationType );
539
537
540
538
// send notification for failed computation
541
539
UUID studyUuid = networkModificationTreeService .getStudyUuidForNodeId (receiverObj .getNodeUuid ());
@@ -548,7 +546,7 @@ public void consumeCalculationFailed(Message<String> msg, ComputationType comput
548
546
public void consumeCalculationStopped (Message <String > msg , ComputationType computationType ) {
549
547
String receiver = msg .getHeaders ().get (HEADER_RECEIVER , String .class );
550
548
if (!Strings .isBlank (receiver )) {
551
- NodeReceiver receiverObj ;
549
+ NodeReceiver receiverObj = null ;
552
550
try {
553
551
receiverObj = objectMapper .readValue (URLDecoder .decode (receiver , StandardCharsets .UTF_8 ), NodeReceiver .class );
554
552
@@ -561,6 +559,10 @@ public void consumeCalculationStopped(Message<String> msg, ComputationType compu
561
559
LOGGER .info ("{} stopped for node '{}'" , computationType .getLabel (), receiverObj .getNodeUuid ());
562
560
} catch (JsonProcessingException e ) {
563
561
LOGGER .error (e .toString ());
562
+ } finally {
563
+ if (receiverObj != null ) {
564
+ handleUnblockNode (receiverObj , computationType );
565
+ }
564
566
}
565
567
}
566
568
}
@@ -590,27 +592,12 @@ public void consumeCalculationCancelFailed(Message<String> msg, ComputationType
590
592
}
591
593
}
592
594
593
- private void consumeLoadFlowResult (Message <String > msg , boolean withRatioTapChangers ) {
594
- Optional .ofNullable (msg .getHeaders ().get (RESULT_UUID , String .class ))
595
- .map (UUID ::fromString )
596
- .ifPresent (resultUuid -> getNodeReceiver (msg ).ifPresent (receiverObj -> {
597
- try {
598
- LOGGER .info ("{} result '{}' available for node '{}'" ,
599
- LOAD_FLOW .getLabel (),
600
- resultUuid ,
601
- receiverObj .getNodeUuid ());
602
-
603
- // update DB
604
- rootNetworkNodeInfoService .updateLoadflowResultUuid (receiverObj .getNodeUuid (), receiverObj .getRootNetworkUuid (), resultUuid , withRatioTapChangers );
605
- } finally {
606
- networkModificationTreeService .unblockNodeTree (receiverObj .getRootNetworkUuid (), receiverObj .getNodeUuid ());
607
-
608
- // send notifications
609
- UUID studyUuid = networkModificationTreeService .getStudyUuidForNodeId (receiverObj .getNodeUuid ());
610
- notificationService .emitStudyChanged (studyUuid , receiverObj .getNodeUuid (), receiverObj .getRootNetworkUuid (), LOAD_FLOW .getUpdateStatusType ());
611
- notificationService .emitStudyChanged (studyUuid , receiverObj .getNodeUuid (), receiverObj .getRootNetworkUuid (), LOAD_FLOW .getUpdateResultType ());
612
- }
613
- }));
595
+ private void handleUnblockNode (NodeReceiver receiverObj , ComputationType computationType ) {
596
+ if (computationType == ComputationType .LOAD_FLOW && networkModificationTreeService .isSecurityNode (receiverObj .getNodeUuid ())) {
597
+ networkModificationTreeService .unblockNodeTree (receiverObj .getRootNetworkUuid (), receiverObj .getNodeUuid ());
598
+ } else {
599
+ networkModificationTreeService .unblockNode (receiverObj .getRootNetworkUuid (), receiverObj .getNodeUuid ());
600
+ }
614
601
}
615
602
616
603
public void consumeCalculationDebug (Message <String > msg , ComputationType computationType ) {
@@ -635,11 +622,18 @@ public void consumeCalculationResult(Message<String> msg, ComputationType comput
635
622
receiverObj .getNodeUuid ());
636
623
637
624
// update DB
638
- rootNetworkNodeInfoService .updateComputationResultUuid (receiverObj .getNodeUuid (), receiverObj .getRootNetworkUuid (), resultUuid , computationType );
625
+ if (computationType == ComputationType .LOAD_FLOW ) {
626
+ Boolean withRatioTapChangers = msg .getHeaders ().get (HEADER_WITH_RATIO_TAP_CHANGERS , Boolean .class );
627
+ rootNetworkNodeInfoService .updateLoadflowResultUuid (receiverObj .getNodeUuid (), receiverObj .getRootNetworkUuid (), resultUuid , withRatioTapChangers );
628
+ } else {
629
+ rootNetworkNodeInfoService .updateComputationResultUuid (receiverObj .getNodeUuid (), receiverObj .getRootNetworkUuid (), resultUuid , computationType );
630
+ }
639
631
640
- UUID studyUuid = networkModificationTreeService .getStudyUuidForNodeId (receiverObj .getNodeUuid ());
632
+ // unblock node
633
+ handleUnblockNode (receiverObj , computationType );
641
634
642
635
// send notifications
636
+ UUID studyUuid = networkModificationTreeService .getStudyUuidForNodeId (receiverObj .getNodeUuid ());
643
637
notificationService .emitStudyChanged (studyUuid , receiverObj .getNodeUuid (), receiverObj .getRootNetworkUuid (), computationType .getUpdateStatusType ());
644
638
notificationService .emitStudyChanged (studyUuid , receiverObj .getNodeUuid (), receiverObj .getRootNetworkUuid (), computationType .getUpdateResultType ());
645
639
}));
@@ -750,10 +744,7 @@ public Consumer<Message<String>> consumeSensitivityAnalysisFailed() {
750
744
751
745
@ Bean
752
746
public Consumer <Message <String >> consumeLoadFlowResult () {
753
- return message -> {
754
- Boolean withRatioTapChangers = message .getHeaders ().get (HEADER_WITH_RATIO_TAP_CHANGERS , Boolean .class );
755
- consumeLoadFlowResult (message , Boolean .TRUE .equals (withRatioTapChangers ));
756
- };
747
+ return message -> consumeCalculationResult (message , LOAD_FLOW );
757
748
}
758
749
759
750
@ Bean
0 commit comments