/**
* Regularly checks the existing rics towards the local repository to keep it
- * consistent.
+ * consistent. When the policy types or instances in the Near-RT RIC is not
+ * consistent, a synchronization is performed.
*/
@Component
@EnableScheduling
@Scheduled(fixedRate = 1000 * 60)
public void checkAllRics() {
logger.debug("Checking Rics starting");
- createTask().subscribe( //
- ric -> logger.debug("Ric: {} checked", ric.ric.name()), //
- null, //
- () -> logger.debug("Checking Rics completed") //
- );
+ createTask().subscribe(null, null, () -> logger.debug("Checking all RICs completed"));
}
private Flux<RicData> createTask() {
- synchronized (this.rics) {
- return Flux.fromIterable(rics.getRics()) //
- .flatMap(this::createRicData) //
- .flatMap(this::checkOneRic) //
- .onErrorResume(throwable -> Mono.empty());
- }
+ return Flux.fromIterable(rics.getRics()) //
+ .flatMap(this::createRicData) //
+ .flatMap(this::checkOneRic) //
+ .onErrorResume(throwable -> Mono.empty());
+
}
private Mono<RicData> checkOneRic(RicData ricData) {
.flatMap(x -> checkRicPolicies(ricData)) //
.flatMap(x -> ricData.ric.getLock().unlock()) //
.doOnError(throwable -> ricData.ric.getLock().unlockBlocking()) //
- .flatMap(x -> checkRicPolicyTypes(ricData)); //
+ .flatMap(x -> checkRicPolicyTypes(ricData)) //
+ .doOnNext(x -> logger.debug("Ric: {} checked OK", ricData.ric.name())) //
+ .doOnError(t -> logger.debug("Ric: {} check Failed, exception: {}", ricData.ric.name(), t.getMessage()));
}
private static class RicData {
}
private Mono<RicData> checkRicState(RicData ric) {
- if (ric.ric.getState() == RicState.UNDEFINED) {
+ if (ric.ric.getState() == RicState.UNAVAILABLE) {
return startSynchronization(ric) //
.onErrorResume(t -> Mono.empty());
} else if (ric.ric.getState() == RicState.SYNCHRONIZING) {