77package org .gridsuite .modification .server .service ;
88
99import com .fasterxml .jackson .databind .ObjectMapper ;
10- import com .google .common .collect .Sets ;
1110import lombok .NonNull ;
11+ import lombok .RequiredArgsConstructor ;
1212import org .gridsuite .modification .server .BuildException ;
1313import org .gridsuite .modification .server .dto .BuildInfos ;
1414import org .gridsuite .modification .server .dto .NetworkModificationResult ;
1515import org .slf4j .Logger ;
1616import org .slf4j .LoggerFactory ;
17- import org .springframework .beans .factory .annotation .Autowired ;
1817import org .springframework .context .annotation .Bean ;
1918import org .springframework .messaging .Message ;
2019import org .springframework .stereotype .Service ;
3433 * @author Franck Lecuyer <franck.lecuyer at rte-france.com>
3534 */
3635@ Service
36+ @ RequiredArgsConstructor
3737public class BuildWorkerService {
3838
3939 private static final Logger LOGGER = LoggerFactory .getLogger (BuildWorkerService .class );
4040
4141 public static final String CANCEL_MESSAGE = "Build was canceled" ;
4242 public static final String FAIL_MESSAGE = "Build has failed" ;
4343
44- private final NetworkModificationService networkModificationService ;
45-
46- private final NetworkModificationObserver networkModificationObserver ;
47-
48- private final ObjectMapper objectMapper ;
49-
50- private final BuildStoppedPublisherService stoppedPublisherService ;
44+ @ NonNull private final NetworkModificationService networkModificationService ;
45+ @ NonNull private final NetworkModificationObserver networkModificationObserver ;
46+ @ NonNull private final ObjectMapper objectMapper ;
47+ @ NonNull private final BuildStoppedPublisherService stoppedPublisherService ;
48+ @ NonNull private NotificationService notificationService ;
5149
5250 private final Map <String , CompletableFuture <NetworkModificationResult >> futures = new ConcurrentHashMap <>();
5351
5452 private final Map <String , BuildCancelContext > cancelBuildRequests = new ConcurrentHashMap <>();
5553
56- private final Set <String > buildRequests = Sets . newConcurrentHashSet ();
54+ private final Set <String > buildRequests = ConcurrentHashMap . newKeySet ();
5755
5856 private final Lock lockRunAndCancel = new ReentrantLock ();
5957
60- @ Autowired
61- private NotificationService notificationService ;
62-
63- public BuildWorkerService (@ NonNull NetworkModificationService networkModificationService ,
64- @ NonNull NetworkModificationObserver networkModificationObserver ,
65- @ NonNull ObjectMapper objectMapper ,
66- @ NonNull BuildStoppedPublisherService stoppedPublisherService ) {
67- this .networkModificationService = networkModificationService ;
68- this .networkModificationObserver = networkModificationObserver ;
69- this .objectMapper = objectMapper ;
70- this .stoppedPublisherService = stoppedPublisherService ;
71- }
72-
7358 private CompletableFuture <NetworkModificationResult > execBuildVariant (BuildExecContext execContext , BuildInfos buildInfos ) {
7459 lockRunAndCancel .lock ();
7560 try {
@@ -83,10 +68,9 @@ private CompletableFuture<NetworkModificationResult> execBuildVariant(BuildExecC
8368 buildRequests .add (execContext .getReceiver ()); // receiver is the node uuid to build
8469
8570 CompletableFuture <NetworkModificationResult > future = CompletableFuture .supplyAsync (() -> {
86- LOGGER .info ("Starting build on variant : {}" , buildInfos .getDestinationVariantId ());
87- return networkModificationService .buildVariant (networkUuid , buildInfos );
88- }
89- );
71+ LOGGER .info ("Starting build on variant : {}" , buildInfos .getDestinationVariantId ());
72+ return networkModificationObserver .observeBuild (execContext , () -> networkModificationService .buildVariant (networkUuid , buildInfos ));
73+ });
9074
9175 futures .put (receiver , future );
9276
@@ -98,7 +82,7 @@ private CompletableFuture<NetworkModificationResult> execBuildVariant(BuildExecC
9882
9983 @ Bean
10084 public Consumer <Message <String >> consumeBuild () {
101- return message -> networkModificationObserver .observeBuild (() -> {
85+ return message -> networkModificationObserver .observeFullBuild (() -> {
10286 BuildExecContext execContext ;
10387 try {
10488 execContext = BuildExecContext .fromMessage (message , objectMapper );
@@ -117,7 +101,7 @@ private void startBuild(BuildExecContext execContext) {
117101 if (future != null && (result = future .join ()) != null ) { // result available
118102 notificationService .emitBuildResultMessage (result , execContext .getReceiver (), execContext .getWorkflowType (), execContext .getWorkflowInfos ());
119103 LOGGER .info ("Build complete on node '{}'" , execContext .getReceiver ());
120- } else { // result not available : stop build request
104+ } else { // result not available: stop build request
121105 if (cancelBuildRequests .get (execContext .getReceiver ()) != null ) {
122106 stoppedPublisherService .publishCancel (execContext .getReceiver (), CANCEL_MESSAGE , execContext .getWorkflowType (), execContext .getWorkflowInfos ());
123107 }
0 commit comments