/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠAmazon . com , ĠInc . Ġor Ġits Ġaffiliates . ĠAll ĠRights ĠReserved . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "). Ċ Ġ* ĠYou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠA Ġcopy Ġof Ġthe ĠLicense Ġis Ġlocated Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* Ġor Ġin Ġthe Ġ" license " Ġfile Ġaccompanying Ġthis Ġfile . ĠThis Ġfile Ġis Ġdistributed Ċ Ġ* Ġon Ġan Ġ" AS ĠIS " ĠBASIS , ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ċ Ġ* Ġexpress Ġor Ġimplied . ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ċ Ġ* Ġpermissions Ġand Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . amazon . opend ist ro fore lastic search . index state management . action Ċ Ċ import Ġcom . amazon . opend ist ro fore lastic search . index state management . model . Managed Index MetaData Ċ import Ġcom . amazon . opend ist ro fore lastic search . index state management . model . action . Action Config . ActionType Ċ import Ġcom . amazon . opend ist ro fore lastic search . index state management . model . action . Force Merge Action Config Ċ import Ġcom . amazon . opend ist ro fore lastic search . index state management . step . Step Ċ import Ġcom . amazon . opend ist ro fore lastic search . index state management . step . force merge . Attempt Call Force Merge Step Ċ import Ġcom . amazon . opend ist ro fore lastic search . index state management . step . force merge . Attempt Set ReadOnly Step Ċ import Ġcom . amazon . opend ist ro fore lastic search . index state management . step . force merge . WaitFor Force Merge Step Ċ import Ġorg . elasticsearch . client . Client Ċ import Ġorg . elasticsearch . cluster . service . Cluster Service Ċ Ċ class ĠForce Merge Action ( ĊĠĠĠ Ġcluster Service : ĠCluster Service , ĊĠĠĠ Ġclient : ĠClient , ĊĠĠĠ Ġmanaged Index MetaData : ĠManaged Index MetaData , ĊĠĠĠ Ġconfig : ĠForce Merge Action Config Ċ ) Ġ: ĠAction ( ActionType . FORCE _ MERGE , Ġconfig , Ġmanaged Index MetaData ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġattempt Set ReadOnly Step Ġ= ĠAttempt Set ReadOnly Step ( cluster Service , Ġclient , Ġconfig , Ġmanaged Index MetaData ) ĊĠĠĠ Ġprivate Ġval Ġattempt Call Force Merge Step Ġ= ĠAttempt Call Force Merge Step ( cluster Service , Ġclient , Ġconfig , Ġmanaged Index MetaData ) ĊĠĠĠ Ġprivate Ġval ĠwaitFor Force Merge Step Ġ= ĠWaitFor Force Merge Step ( cluster Service , Ġclient , Ġconfig , Ġmanaged Index MetaData ) ĊĊĠĠĠ Ġ// ĠUsing Ġa ĠLinkedHashMap Ġhere Ġto Ġmaintain Ġorder Ġof Ġsteps Ġfor Ġget Steps () Ġwhile Ġproviding Ġa Ġconvenient Ġway Ġto ĊĠĠĠ Ġ// Ġget Ġthe Ġcurrent ĠStep Ġobject Ġusing Ġthe Ġcurrent Ġstep 's Ġname Ġin Ġget Step To Execute () ĊĠĠĠ Ġprivate Ġval Ġstep Name To Step : ĠLinkedHashMap < String , ĠStep > Ġ= Ġlinked Map Of ( ĊĠĠĠĠĠĠĠ ĠAttempt Set ReadOnly Step . name Ġto Ġattempt Set ReadOnly Step , ĊĠĠĠĠĠĠĠ ĠAttempt Call Force Merge Step . name Ġto Ġattempt Call Force Merge Step , ĊĠĠĠĠĠĠĠ ĠWaitFor Force Merge Step . name Ġto ĠwaitFor Force Merge Step ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġget Steps (): ĠList < Step > Ġ= Ġstep Name To Step . values . toList () ĊĊĠĠĠ Ġ@ Suppress (" Return Count ") ĊĠĠĠ Ġoverride Ġfun Ġget Step To Execute (): ĠStep Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġstep MetaData Ġis Ġnull , Ġreturn Ġthe Ġfirst Ġstep Ġin ĠForce Merge Action ĊĠĠĠĠĠĠĠ Ġval Ġstep MetaData Ġ= Ġmanaged Index MetaData . step MetaData Ġ?: Ġreturn Ġattempt Set ReadOnly Step ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Step Ġ= Ġstep MetaData . name ĊĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġthe Ġcurrent Ġstep Ġis Ġnot Ġfrom Ġthis Ġaction Ġ( ass umed Ġto Ġbe Ġfrom Ġthe Ġprevious Ġaction Ġin Ġthe Ġpolicy ), Ġreturn ĊĠĠĠĠĠĠĠ Ġ// Ġthe Ġfirst Ġstep Ġin ĠForce Merge Action ĊĠĠĠĠĠĠĠ Ġif Ġ(! step Name To Step . containsKey ( current Step )) Ġreturn Ġattempt Set ReadOnly Step ĊĊĠĠĠĠĠĠĠ Ġval Ġcurrent Step Status Ġ= Ġstep MetaData . step Status ĊĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġthe Ġcurrent Ġstep Ġhas Ġcompleted , Ġreturn Ġthe Ġnext Ġstep ĊĠĠĠĠĠĠĠ Ġif Ġ( current Step Status Ġ== ĠStep . Step Status . COMPLETED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( current Step ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAttempt Set ReadOnly Step . name Ġ-> Ġattempt Call Force Merge Step ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAttempt Call Force Merge Step . name Ġ-> ĠwaitFor Force Merge Step ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠShould n 't Ġhit Ġthis Ġcase Ġbut Ġincluding Ġit Ġso Ġthat Ġthe Ġwhen Ġexpression Ġis Ġex haustive ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġstep Name To Step [ current Step ] !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġthe Ġcurrent Ġstep Ġhas Ġnot Ġcompleted , Ġreturn Ġit ĊĠĠĠĠĠĠĠ Ġreturn Ġstep Name To Step [ current Step ] !! ĊĠĠĠ Ġ} Ċ } Ċ