/* Ċ Ġ* ĠSPDX - License - Identifier : ĠApache - 2 . 0 Ċ Ġ* Ċ Ġ* ĠThe ĠOpen Search ĠContributors Ġrequire Ġcontributions Ġmade Ġto Ċ Ġ* Ġthis Ġfile Ġbe Ġlicensed Ġunder Ġthe ĠApache - 2 . 0 Ġlicense Ġor Ġa Ċ Ġ* Ġcompatible Ġopen Ġsource Ġlicense . Ċ Ġ* Ċ Ġ* ĠMod ifications ĠCopyright ĠOpen Search ĠContributors . ĠSee Ċ Ġ* ĠGitHub Ġhistory Ġfor Ġdetails . Ċ Ġ*/ Ċ Ċ package Ġorg . opense arch . replication . task Ċ Ċ import Ġorg . opense arch . common . settings . Settings Ċ import Ġorg . opense arch . index . Index Service Ċ import Ġorg . opense arch . index . shard . Index EventListener Ċ import Ġorg . opense arch . index . shard . Index Shard Ċ import Ġorg . opense arch . index . shard . Shard Id Ċ import Ġorg . opense arch . indices . cluster . Indices Cluster State Service Ċ import Ġjava . util . Collections Ċ import Ġjava . util . concurrent . Concurrent HashMap Ċ Ċ object ĠIndex Close Listener Ġ: ĠIndex EventListener Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġtasks Ġ= ĠConcurrent HashMap < Any , ĠMutable Set < Cross Cluster Replication Task >>() ĊĊĠĠĠ Ġfun Ġadd Close Listener ( index Or Shard Id : ĠAny , Ġtask : ĠCross Cluster Replication Task ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire ( index Or Shard Id Ġis ĠString Ġ|| Ġindex Or Shard Id Ġis ĠSh ard Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Can 't Ġregister Ġa Ġclose Ġlistener Ġfor Ġ${ index Or Shard Id }. ĠOnly ĠIndex Ġor ĠSh ard Ids Ġare Ġallowed ." ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtasks . compute If Absent ( index Or Shard Id ) Ġ{ ĠCollections . synchronized Set ( mutable Set Of ()) Ġ}. add ( task ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Close Listener ( index Or Shard Id : ĠAny , Ġtask : ĠCross Cluster Replication Task ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtasks . compute If Present ( index Or Shard Id ) Ġ{ Ġ_, Ġv Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv . remove ( task ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( v . isEmpty ()) Ġnull Ġelse Ġv ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbefore Index Shard Closed ( shard Id : ĠSh ard Id , Ġindex Shard : ĠIndex Shard ?, Ġindex Settings : ĠSettings ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . before Index Shard Closed ( shard Id , Ġindex Shard , Ġindex Settings ) ĊĠĠĠĠĠĠĠ Ġval Ġtasks To Cancel Ġ= Ġtasks . remove ( shard Id ) ĊĠĠĠĠĠĠĠ Ġif Ġ( tasks To Cancel Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( task Ġin Ġtasks To Cancel ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . on Index Or Shard Closed ( shard Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbefore Index Removed ( index Service : ĠIndex Service , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreason : ĠInd ices Cluster State Service . Allocated Indices . Index Removal Reason ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . before Index Removed ( index Service , Ġreason ) ĊĠĠĠĠĠĠĠ Ġval Ġtasks To Cancel Ġ= Ġtasks . remove ( index Service . index (). name ) ĊĠĠĠĠĠĠĠ Ġif Ġ( tasks To Cancel Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( task Ġin Ġtasks To Cancel ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . on Index Or Shard Closed ( index Service . index (). name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }