@@ -199,7 +199,7 @@ private void addChannelChange(
199199 aaArchivePVS .get (archiverAlias ).add (newArchiverPV );
200200 }
201201 }
202-
202+
203203 private ArchiveAction pickArchiveAction (String archiveStatus , String pvStatus ) {
204204 if (archiveStatus .equals ("Being archived" ) && (pvStatus .equals (PV_STATUS_INACTIVE ))) {
205205 return ArchiveAction .PAUSE ;
@@ -209,39 +209,52 @@ private ArchiveAction pickArchiveAction(String archiveStatus, String pvStatus) {
209209 && !archiveStatus .equals ("Paused" )
210210 && pvStatus .equals (PV_STATUS_ACTIVE )) { // If archive status anything else
211211 return ArchiveAction .ARCHIVE ;
212+
212213 }
213214
214215 return ArchiveAction .NONE ;
215216 }
216217
217218 private Map <ArchiveAction , List <ArchivePVOptions >> getArchiveActions (
218- Map <String , ArchivePVOptions > archivePVS , ArchiverInfo archiverInfo ) {
219+ Map <String , ArchivePVOptions > archivePVS , ArchiverInfo archiverInfo ) {
219220 if (archiverInfo == null ) {
220221 return Map .of ();
221222 }
222223
223224 logger .log (Level .INFO , () -> String .format ("Get archiver status in archiver %s" , archiverInfo ));
224225
225226 Map <ArchiveAction , List <ArchivePVOptions >> result = new EnumMap <>(ArchiveAction .class );
226- Arrays .stream (ArchiveAction .values ())
227- .forEach (archiveAction -> result .put (archiveAction , new ArrayList <>()));
227+ Arrays .stream (ArchiveAction .values ()).forEach (archiveAction -> result .put (archiveAction , new ArrayList <>()));
228228 // Don't request to archive an empty list.
229229 if (archivePVS .isEmpty ()) {
230230 return result ;
231231 }
232- List <Map <String , String >> statuses =
233- archiverClient .getStatuses (archivePVS , archiverInfo .url (), archiverInfo .alias ());
234- statuses .forEach (
235- archivePVStatusJsonMap -> {
236- String archiveStatus = archivePVStatusJsonMap .get ("status" );
237- String pvName = archivePVStatusJsonMap .get ("pvName" );
238- String pvStatus = archivePVS .get (pvName ).getPvStatus ();
239- ArchiveAction action = pickArchiveAction (archiveStatus , pvStatus );
240- result .get (action ).add (archivePVS .get (pvName ));
241- });
232+ List <Map <String , String >> statuses = archiverClient .getStatuses (archivePVS , archiverInfo .url (), archiverInfo .alias ());
233+ logger .log (Level .FINER , "Statuses {0}" , statuses );
234+ statuses .forEach (archivePVStatusJsonMap -> {
235+ String archiveStatus = archivePVStatusJsonMap .get ("status" );
236+ String pvName = archivePVStatusJsonMap .get ("pvName" );
237+
238+ if (archiveStatus == null || pvName == null ) {
239+ logger .log (Level .WARNING , "Missing status or pvName in archivePVStatusJsonMap: {0}" , archivePVStatusJsonMap );
240+ return ;
241+ }
242+
243+ ArchivePVOptions archivePVOptions = archivePVS .get (pvName );
244+ if (archivePVOptions == null ) {
245+ logger .log (Level .WARNING , "archivePVS does not contain pvName: {0}" , pvName );
246+ return ;
247+ }
248+
249+ String pvStatus = archivePVOptions .getPvStatus ();
250+ ArchiveAction action = pickArchiveAction (archiveStatus , pvStatus );
251+
252+ List <ArchivePVOptions > archivePVOptionsList = result .get (action );
253+ archivePVOptionsList .add (archivePVOptions );
254+ });
242255 return result ;
243256 }
244-
257+
245258 private ArchivePVOptions createArchivePV (
246259 List <String > policyList , Channel channel , String archiveProperty , String pvStaus ) {
247260 ArchivePVOptions newArchiverPV = new ArchivePVOptions ();
0 commit comments