From 8afc0f1748689efbb2d71111c17404a7595b5a00 Mon Sep 17 00:00:00 2001 From: Adrien Grand Date: Thu, 31 Mar 2016 19:21:04 +0200 Subject: [PATCH] Remove MathUtils. #17454 It has a single method: mod, which can be replaced with Math.floorMod since we always coll it with a positive divisor. --- .../cluster/routing/OperationRouting.java | 3 +- .../elasticsearch/common/math/MathUtils.java | 36 ------------------- .../index/engine/InternalEngine.java | 3 +- .../transport/netty/NettyTransport.java | 11 +++--- .../common/math/MathUtilsTests.java | 35 ------------------ .../DiscoveryWithServiceDisruptionsIT.java | 3 +- .../recovery/RecoveryWhileUnderLoadIT.java | 3 -- 7 files changed, 8 insertions(+), 86 deletions(-) delete mode 100644 core/src/main/java/org/elasticsearch/common/math/MathUtils.java delete mode 100644 core/src/test/java/org/elasticsearch/common/math/MathUtilsTests.java diff --git a/core/src/main/java/org/elasticsearch/cluster/routing/OperationRouting.java b/core/src/main/java/org/elasticsearch/cluster/routing/OperationRouting.java index aabb1a8de6e..70246026894 100644 --- a/core/src/main/java/org/elasticsearch/cluster/routing/OperationRouting.java +++ b/core/src/main/java/org/elasticsearch/cluster/routing/OperationRouting.java @@ -27,7 +27,6 @@ import org.elasticsearch.common.Nullable; import org.elasticsearch.common.Strings; import org.elasticsearch.common.component.AbstractComponent; import org.elasticsearch.common.inject.Inject; -import org.elasticsearch.common.math.MathUtils; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.index.IndexNotFoundException; import org.elasticsearch.index.shard.ShardId; @@ -226,7 +225,7 @@ public class OperationRouting extends AbstractComponent { } else { hash = Murmur3HashFunction.hash(routing); } - return MathUtils.mod(hash, indexMetaData.getNumberOfShards()); + return Math.floorMod(hash, indexMetaData.getNumberOfShards()); } private void ensureNodeIdExists(DiscoveryNodes nodes, String nodeId) { diff --git a/core/src/main/java/org/elasticsearch/common/math/MathUtils.java b/core/src/main/java/org/elasticsearch/common/math/MathUtils.java deleted file mode 100644 index cd19c05109b..00000000000 --- a/core/src/main/java/org/elasticsearch/common/math/MathUtils.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License 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 org.elasticsearch.common.math; - -public enum MathUtils { - ; - - /** - * Return the (positive) remainder of the division of v by mod. - */ - public static int mod(int v, int m) { - int r = v % m; - if (r < 0) { - r += m; - } - return r; - } - -} diff --git a/core/src/main/java/org/elasticsearch/index/engine/InternalEngine.java b/core/src/main/java/org/elasticsearch/index/engine/InternalEngine.java index c0c7b79e10d..d4807abeb23 100644 --- a/core/src/main/java/org/elasticsearch/index/engine/InternalEngine.java +++ b/core/src/main/java/org/elasticsearch/index/engine/InternalEngine.java @@ -49,7 +49,6 @@ import org.elasticsearch.common.lucene.LoggerInfoStream; import org.elasticsearch.common.lucene.Lucene; import org.elasticsearch.common.lucene.index.ElasticsearchDirectoryReader; import org.elasticsearch.common.lucene.uid.Versions; -import org.elasticsearch.common.math.MathUtils; import org.elasticsearch.common.unit.ByteSizeValue; import org.elasticsearch.common.util.concurrent.AbstractRunnable; import org.elasticsearch.common.util.concurrent.ReleasableLock; @@ -913,7 +912,7 @@ public class InternalEngine extends Engine { private Object dirtyLock(BytesRef uid) { int hash = Murmur3HashFunction.hash(uid.bytes, uid.offset, uid.length); - return dirtyLocks[MathUtils.mod(hash, dirtyLocks.length)]; + return dirtyLocks[Math.floorMod(hash, dirtyLocks.length)]; } private Object dirtyLock(Term uid) { diff --git a/core/src/main/java/org/elasticsearch/transport/netty/NettyTransport.java b/core/src/main/java/org/elasticsearch/transport/netty/NettyTransport.java index 5b9029fa03e..5315d536f80 100644 --- a/core/src/main/java/org/elasticsearch/transport/netty/NettyTransport.java +++ b/core/src/main/java/org/elasticsearch/transport/netty/NettyTransport.java @@ -35,7 +35,6 @@ import org.elasticsearch.common.io.stream.ReleasableBytesStreamOutput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.lease.Releasable; import org.elasticsearch.common.lease.Releasables; -import org.elasticsearch.common.math.MathUtils; import org.elasticsearch.common.metrics.CounterMetric; import org.elasticsearch.common.netty.NettyUtils; import org.elasticsearch.common.netty.OpenChannelsHandler; @@ -1311,15 +1310,15 @@ public class NettyTransport extends AbstractLifecycleComponent implem public Channel channel(TransportRequestOptions.Type type) { if (type == TransportRequestOptions.Type.REG) { - return reg[MathUtils.mod(regCounter.incrementAndGet(), reg.length)]; + return reg[Math.floorMod(regCounter.incrementAndGet(), reg.length)]; } else if (type == TransportRequestOptions.Type.STATE) { - return state[MathUtils.mod(stateCounter.incrementAndGet(), state.length)]; + return state[Math.floorMod(stateCounter.incrementAndGet(), state.length)]; } else if (type == TransportRequestOptions.Type.PING) { - return ping[MathUtils.mod(pingCounter.incrementAndGet(), ping.length)]; + return ping[Math.floorMod(pingCounter.incrementAndGet(), ping.length)]; } else if (type == TransportRequestOptions.Type.BULK) { - return bulk[MathUtils.mod(bulkCounter.incrementAndGet(), bulk.length)]; + return bulk[Math.floorMod(bulkCounter.incrementAndGet(), bulk.length)]; } else if (type == TransportRequestOptions.Type.RECOVERY) { - return recovery[MathUtils.mod(recoveryCounter.incrementAndGet(), recovery.length)]; + return recovery[Math.floorMod(recoveryCounter.incrementAndGet(), recovery.length)]; } else { throw new IllegalArgumentException("no type channel for [" + type + "]"); } diff --git a/core/src/test/java/org/elasticsearch/common/math/MathUtilsTests.java b/core/src/test/java/org/elasticsearch/common/math/MathUtilsTests.java deleted file mode 100644 index a25b7a3a780..00000000000 --- a/core/src/test/java/org/elasticsearch/common/math/MathUtilsTests.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License 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 org.elasticsearch.common.math; - -import org.elasticsearch.test.ESTestCase; - -public class MathUtilsTests extends ESTestCase { - public void testMod() { - final int iters = scaledRandomIntBetween(1000, 10000); - for (int i = 0; i < iters; ++i) { - final int v = rarely() ? Integer.MIN_VALUE : rarely() ? Integer.MAX_VALUE : randomInt(); - final int m = rarely() ? Integer.MAX_VALUE : randomIntBetween(1, Integer.MAX_VALUE); - final int mod = MathUtils.mod(v, m); - assertTrue(mod >= 0); - assertTrue(mod < m); - } - } -} diff --git a/core/src/test/java/org/elasticsearch/discovery/DiscoveryWithServiceDisruptionsIT.java b/core/src/test/java/org/elasticsearch/discovery/DiscoveryWithServiceDisruptionsIT.java index 03a3cb19754..ba24c050881 100644 --- a/core/src/test/java/org/elasticsearch/discovery/DiscoveryWithServiceDisruptionsIT.java +++ b/core/src/test/java/org/elasticsearch/discovery/DiscoveryWithServiceDisruptionsIT.java @@ -45,7 +45,6 @@ import org.elasticsearch.common.Nullable; import org.elasticsearch.common.Priority; import org.elasticsearch.common.Strings; import org.elasticsearch.common.collect.Tuple; -import org.elasticsearch.common.math.MathUtils; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.unit.TimeValue; import org.elasticsearch.discovery.zen.ZenDiscovery; @@ -468,7 +467,7 @@ public class DiscoveryWithServiceDisruptionsIT extends ESIntegTestCase { logger.info("[{}] Acquired semaphore and it has {} permits left", name, semaphore.availablePermits()); try { id = Integer.toString(idGenerator.incrementAndGet()); - int shard = MathUtils.mod(Murmur3HashFunction.hash(id), numPrimaries); + int shard = Math.floorMod(Murmur3HashFunction.hash(id), numPrimaries); logger.trace("[{}] indexing id [{}] through node [{}] targeting shard [{}]", name, id, node, shard); IndexResponse response = client.prepareIndex("test", "type", id).setSource("{}").setTimeout("1s").get(); assertThat(response.getVersion(), equalTo(1L)); diff --git a/core/src/test/java/org/elasticsearch/recovery/RecoveryWhileUnderLoadIT.java b/core/src/test/java/org/elasticsearch/recovery/RecoveryWhileUnderLoadIT.java index c9ed1921482..c7b6397b3ba 100644 --- a/core/src/test/java/org/elasticsearch/recovery/RecoveryWhileUnderLoadIT.java +++ b/core/src/test/java/org/elasticsearch/recovery/RecoveryWhileUnderLoadIT.java @@ -24,20 +24,17 @@ import org.elasticsearch.action.admin.indices.stats.IndicesStatsResponse; import org.elasticsearch.action.admin.indices.stats.ShardStats; import org.elasticsearch.action.get.GetResponse; import org.elasticsearch.action.search.SearchResponse; -import org.elasticsearch.cluster.routing.Murmur3HashFunction; import org.elasticsearch.cluster.service.ClusterService; import org.elasticsearch.cluster.ClusterState; import org.elasticsearch.cluster.routing.ShardRouting; import org.elasticsearch.common.Priority; import org.elasticsearch.common.logging.ESLogger; import org.elasticsearch.common.logging.Loggers; -import org.elasticsearch.common.math.MathUtils; import org.elasticsearch.common.unit.TimeValue; import org.elasticsearch.index.IndexSettings; import org.elasticsearch.index.shard.DocsStats; import org.elasticsearch.index.shard.ShardId; import org.elasticsearch.index.translog.Translog; -import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.sort.SortOrder; import org.elasticsearch.test.BackgroundIndexer; import org.elasticsearch.test.ESIntegTestCase;