예제 #1
0
  @Override
  public synchronized void updateMetaData(final IndexMetaData metadata) {
    final Translog.Durability oldTranslogDurability = indexSettings.getTranslogDurability();
    if (indexSettings.updateIndexMetaData(metadata)) {
      for (final IndexShard shard : this.shards.values()) {
        try {
          shard.onSettingsChanged();
        } catch (Exception e) {
          logger.warn("[{}] failed to notify shard about setting change", e, shard.shardId().id());
        }
      }
      if (refreshTask.getInterval().equals(indexSettings.getRefreshInterval()) == false) {
        rescheduleRefreshTasks();
      }
      final Translog.Durability durability = indexSettings.getTranslogDurability();
      if (durability != oldTranslogDurability) {
        rescheduleFsyncTask(durability);
      }
    }

    // update primary terms
    for (final IndexShard shard : this.shards.values()) {
      shard.updatePrimaryTerm(metadata.primaryTerm(shard.shardId().id()));
    }
  }