diff --git a/x-pack/plugin/src/main/java/org/elasticsearch/xpack/ccr/action/bulk/TransportBulkShardOperationsAction.java b/x-pack/plugin/src/main/java/org/elasticsearch/xpack/ccr/action/bulk/TransportBulkShardOperationsAction.java index b794ad10eac..7d92c5fc938 100644 --- a/x-pack/plugin/src/main/java/org/elasticsearch/xpack/ccr/action/bulk/TransportBulkShardOperationsAction.java +++ b/x-pack/plugin/src/main/java/org/elasticsearch/xpack/ccr/action/bulk/TransportBulkShardOperationsAction.java @@ -13,6 +13,7 @@ import org.elasticsearch.cluster.service.ClusterService; import org.elasticsearch.common.inject.Inject; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.index.engine.Engine; +import org.elasticsearch.index.mapper.MapperException; import org.elasticsearch.index.shard.IndexShard; import org.elasticsearch.index.translog.Translog; import org.elasticsearch.indices.IndicesService; @@ -67,7 +68,10 @@ public class TransportBulkShardOperationsAction final BulkShardOperationsRequest request, final IndexShard shard, final Engine.Operation.Origin origin) throws IOException { Translog.Location location = null; for (final Translog.Operation operation : request.getOperations()) { - final Engine.Result result = shard.applyTranslogOperation(operation, origin, m -> {}); + final Engine.Result result = shard.applyTranslogOperation(operation, origin, m -> { + // TODO: Figure out how to deal best with dynamic mapping updates from the leader side: + throw new MapperException("dynamic mapping updates are not allowed in follow shards [" + operation + "]"); + }); assert result.getSeqNo() == operation.seqNo(); assert result.hasFailure() == false; location = locationToSync(location, result.getTranslogLocation());