@@ -621,10 +621,18 @@ public void addPendingDelete(ShardId shardId, @IndexSettings Settings settings)
621
621
if (settings == null ) {
622
622
throw new IllegalArgumentException ("settings must not be null" );
623
623
}
624
- PendingDelete pendingDelete = new PendingDelete (shardId , settings , false );
624
+ PendingDelete pendingDelete = new PendingDelete (shardId , settings );
625
625
addPendingDelete (shardId .index (), pendingDelete );
626
626
}
627
627
628
+ /**
629
+ * Adds a pending delete for the given index.
630
+ */
631
+ public void addPendingDelete (Index index , @ IndexSettings Settings settings ) {
632
+ PendingDelete pendingDelete = new PendingDelete (index , settings );
633
+ addPendingDelete (index , pendingDelete );
634
+ }
635
+
628
636
private void addPendingDelete (Index index , PendingDelete pendingDelete ) {
629
637
synchronized (pendingDeletes ) {
630
638
List <PendingDelete > list = pendingDeletes .get (index );
@@ -636,36 +644,45 @@ private void addPendingDelete(Index index, PendingDelete pendingDelete) {
636
644
}
637
645
}
638
646
639
- /**
640
- * Adds a pending delete for the given index shard.
641
- */
642
- public void addPendingDelete (Index index , @ IndexSettings Settings settings ) {
643
- PendingDelete pendingDelete = new PendingDelete (null , settings , true );
644
- addPendingDelete (index , pendingDelete );
645
- }
646
-
647
647
private static final class PendingDelete implements Comparable <PendingDelete > {
648
- final ShardId shardId ;
648
+ final String index ;
649
+ final int shardId ;
649
650
final Settings settings ;
650
651
final boolean deleteIndex ;
651
652
652
- public PendingDelete (ShardId shardId , Settings settings , boolean deleteIndex ) {
653
- this .shardId = shardId ;
653
+ /**
654
+ * Creates a new pending delete of an index
655
+ */
656
+ public PendingDelete (ShardId shardId , Settings settings ) {
657
+ this .index = shardId .getIndex ();
658
+ this .shardId = shardId .getId ();
654
659
this .settings = settings ;
655
- this .deleteIndex = deleteIndex ;
656
- assert deleteIndex || shardId != null ;
660
+ this .deleteIndex = false ;
661
+ }
662
+
663
+ /**
664
+ * Creates a new pending delete of a shard
665
+ */
666
+ public PendingDelete (Index index , Settings settings ) {
667
+ this .index = index .getName ();
668
+ this .shardId = -1 ;
669
+ this .settings = settings ;
670
+ this .deleteIndex = true ;
657
671
}
658
672
659
673
@ Override
660
674
public String toString () {
661
- return shardId .toString ();
675
+ StringBuilder sb = new StringBuilder ();
676
+ sb .append ("[" ).append (index ).append ("]" );
677
+ if (shardId != -1 ) {
678
+ sb .append ("[" ).append (shardId ).append ("]" );
679
+ }
680
+ return sb .toString ();
662
681
}
663
682
664
683
@ Override
665
684
public int compareTo (PendingDelete o ) {
666
- int left = deleteIndex ? -1 : shardId .id ();
667
- int right = o .deleteIndex ? -1 : o .shardId .id ();
668
- return Integer .compare (left , right );
685
+ return Integer .compare (shardId , o .shardId );
669
686
}
670
687
}
671
688
@@ -704,6 +721,7 @@ public void processPendingDeletes(Index index, @IndexSettings Settings indexSett
704
721
PendingDelete delete = iterator .next ();
705
722
706
723
if (delete .deleteIndex ) {
724
+ assert delete .shardId == -1 ;
707
725
logger .debug ("{} deleting index store reason [{}]" , index , "pending delete" );
708
726
try {
709
727
nodeEnv .deleteIndexDirectoryUnderLock (index , indexSettings );
@@ -712,7 +730,8 @@ public void processPendingDeletes(Index index, @IndexSettings Settings indexSett
712
730
logger .debug ("{} retry pending delete" , ex , index );
713
731
}
714
732
} else {
715
- ShardLock shardLock = locks .get (delete .shardId );
733
+ assert delete .shardId != -1 ;
734
+ ShardLock shardLock = locks .get (new ShardId (delete .index , delete .shardId ));
716
735
if (shardLock != null ) {
717
736
try {
718
737
deleteShardStore ("pending delete" , shardLock , delete .settings );
0 commit comments