aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--airlift-zstd/src/test/java/ai/vespa/airlift/zstd/TestCompressor.java1
-rw-r--r--client/pom.xml6
-rw-r--r--container-search/abi-spec.json3
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/hitfield/RawBase64.java18
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/MultiRangeItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/MultiTermItem.java4
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/result/BucketGroupId.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/result/HitRenderer.java24
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/result/RawBucketId.java9
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/result/RawId.java6
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/profile/compiled/Binding.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java27
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/result/GroupIdTestCase.java7
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/result/HitRendererTestCase.java4
-rw-r--r--document/src/main/java/com/yahoo/document/serialization/DocumentUpdateFlags.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/core/ExportPackagesIT.java12
-rw-r--r--model-integration/src/main/java/ai/vespa/embedding/BertBaseEmbedder.java18
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/OrderedTensorType.java4
-rw-r--r--model-integration/src/main/resources/configdefinitions/embedding.bert-base-embedder.def4
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/CapacityChecker.java2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/benchmarks/ResultMetrics.java4
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/index/CachedPostingListCounter.java5
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/Int16ResultNode.java6
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/Int32ResultNode.java8
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/Int8ResultNode.java6
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/FieldMatchMetrics.java88
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/gbdtoptimization/GBDTNode.java14
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/gbdt/GbdtConverterTestCase.java58
-rw-r--r--security-utils/src/main/java/com/yahoo/security/SideChannelSafe.java2
-rw-r--r--security-utils/src/test/java/com/yahoo/security/SharedKeyTest.java6
-rw-r--r--vdslib/src/main/java/com/yahoo/vdslib/distribution/Distribution.java4
-rw-r--r--vespa-feed-client-api/pom.xml6
-rw-r--r--vespa-feed-client-cli/pom.xml6
-rw-r--r--vespa-feed-client/pom.xml6
-rw-r--r--vespajlib/src/main/java/com/yahoo/slime/BinaryEncoder.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/functions/ReduceJoin.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/io/FatalErrorHandlerTestCase.java58
37 files changed, 176 insertions, 262 deletions
diff --git a/airlift-zstd/src/test/java/ai/vespa/airlift/zstd/TestCompressor.java b/airlift-zstd/src/test/java/ai/vespa/airlift/zstd/TestCompressor.java
index d6f13b98c71..4aa00f91ffc 100644
--- a/airlift-zstd/src/test/java/ai/vespa/airlift/zstd/TestCompressor.java
+++ b/airlift-zstd/src/test/java/ai/vespa/airlift/zstd/TestCompressor.java
@@ -20,6 +20,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static sun.misc.Unsafe.ARRAY_BYTE_BASE_OFFSET;
+@SuppressWarnings("proprietary")
public class TestCompressor
{
@Test
diff --git a/client/pom.xml b/client/pom.xml
index a310e7d6feb..6da6dc74a82 100644
--- a/client/pom.xml
+++ b/client/pom.xml
@@ -35,6 +35,12 @@
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<release>${vespaClients.jdk.releaseVersion}</release>
+ <compilerArgs> <!-- Remove (to use default) when not compiling for 8 -->
+ <arg>-Xlint:all</arg>
+ <arg>-Xlint:-rawtypes</arg>
+ <arg>-Xlint:-unchecked</arg>
+ <arg>-Xlint:-serial</arg>
+ </compilerArgs>
</configuration>
</plugin>
<plugin>
diff --git a/container-search/abi-spec.json b/container-search/abi-spec.json
index 50aba749570..fbcf84f5b5d 100644
--- a/container-search/abi-spec.json
+++ b/container-search/abi-spec.json
@@ -210,8 +210,11 @@
"methods" : [
"public void <init>(byte[])",
"public void <init>(byte[], boolean)",
+ "public byte[] value()",
"public int compareTo(com.yahoo.prelude.hitfield.RawBase64)",
"public java.lang.String toString()",
+ "public boolean equals(java.lang.Object)",
+ "public int hashCode()",
"public bridge synthetic int compareTo(java.lang.Object)"
],
"fields" : [ ]
diff --git a/container-search/src/main/java/com/yahoo/prelude/hitfield/RawBase64.java b/container-search/src/main/java/com/yahoo/prelude/hitfield/RawBase64.java
index ada0797ab02..71964054e0d 100644
--- a/container-search/src/main/java/com/yahoo/prelude/hitfield/RawBase64.java
+++ b/container-search/src/main/java/com/yahoo/prelude/hitfield/RawBase64.java
@@ -3,8 +3,10 @@ package com.yahoo.prelude.hitfield;
import java.util.Arrays;
import java.util.Base64;
+import java.util.Objects;
/**
+ * Wraps a byte [] and renders it as base64 encoded string
* @author baldersheim
*/
public class RawBase64 implements Comparable<RawBase64> {
@@ -14,10 +16,13 @@ public class RawBase64 implements Comparable<RawBase64> {
this(content, false);
}
public RawBase64(byte[] content, boolean withoutPadding) {
+ Objects.requireNonNull(content);
this.content = content;
this.withoutPadding = withoutPadding;
}
+ public byte [] value() { return content; }
+
@Override
public int compareTo(RawBase64 rhs) {
return Arrays.compareUnsigned(content, rhs.content);
@@ -29,4 +34,17 @@ public class RawBase64 implements Comparable<RawBase64> {
? Base64.getEncoder().withoutPadding().encodeToString(content)
: Base64.getEncoder().encodeToString(content);
}
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ RawBase64 rawBase64 = (RawBase64) o;
+ return Arrays.equals(content, rawBase64.content);
+ }
+
+ @Override
+ public int hashCode() {
+ return Arrays.hashCode(content);
+ }
}
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/MultiRangeItem.java b/container-search/src/main/java/com/yahoo/prelude/query/MultiRangeItem.java
index 7ba7a13936f..3dac4cb92c0 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/MultiRangeItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/MultiRangeItem.java
@@ -271,7 +271,7 @@ public class MultiRangeItem<Type extends Number> extends MultiTermItem {
if (endInclusive) metadata |= 0b00000100;
encoder = type.encoderFor(sortedRanges());
- metadata |= encoder.id << 3;
+ metadata |= (byte)(encoder.id << 3);
buffer.put(metadata);
putString(startIndex, buffer);
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/MultiTermItem.java b/container-search/src/main/java/com/yahoo/prelude/query/MultiTermItem.java
index a7ca62d153c..03a661499e0 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/MultiTermItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/MultiTermItem.java
@@ -67,8 +67,8 @@ abstract class MultiTermItem extends SimpleTaggableItem {
super.encodeThis(buffer);
byte metadata = 0;
- metadata |= (operatorType().code << 5) & 0b11100000;
- metadata |= ( termType().code ) & 0b00011111;
+ metadata |= (byte)((byte)(operatorType().code << 5) & (byte)0b11100000);
+ metadata |= (byte)(termType().code & (byte)0b00011111);
buffer.put(metadata);
buffer.putInt(terms());
encodeBlueprint(buffer);
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/result/BucketGroupId.java b/container-search/src/main/java/com/yahoo/search/grouping/result/BucketGroupId.java
index 05efc134465..0bea390ad63 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/result/BucketGroupId.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/result/BucketGroupId.java
@@ -1,8 +1,6 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.result;
-import static com.yahoo.text.Lowercase.toLowerCase;
-
/**
* This abstract class is used in {@link Group} instances where the identifying expression evaluated to a {@link
* com.yahoo.search.grouping.request.BucketValue}. The range is inclusive-from and exclusive-to.
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/result/HitRenderer.java b/container-search/src/main/java/com/yahoo/search/grouping/result/HitRenderer.java
index 343fea82b6e..91c46960ab0 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/result/HitRenderer.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/result/HitRenderer.java
@@ -7,7 +7,6 @@ import com.yahoo.text.Utf8String;
import com.yahoo.text.XMLWriter;
import java.io.IOException;
-import java.util.Arrays;
import java.util.Map;
/**
@@ -63,28 +62,15 @@ public abstract class HitRenderer {
private static void renderGroupId(GroupId id, XMLWriter writer) {
writer.openTag(TAG_GROUP_ID).attribute(ATR_TYPE, id.getTypeName());
- if (id instanceof ValueGroupId) {
- writer.content(getIdValue((ValueGroupId)id), false);
- } else if (id instanceof BucketGroupId) {
- BucketGroupId bucketId = (BucketGroupId)id;
- writer.openTag(TAG_BUCKET_FROM).content(getBucketFrom(bucketId), false).closeTag();
- writer.openTag(TAG_BUCKET_TO).content(getBucketTo(bucketId), false).closeTag();
+ if (id instanceof ValueGroupId<?> valueGroupId) {
+ writer.content(valueGroupId.getValue(), false);
+ } else if (id instanceof BucketGroupId bucketId) {
+ writer.openTag(TAG_BUCKET_FROM).content(bucketId.getFrom(), false).closeTag();
+ writer.openTag(TAG_BUCKET_TO).content(bucketId.getTo(), false).closeTag();
}
writer.closeTag();
}
- private static Object getIdValue(ValueGroupId id) {
- return id instanceof RawId ? Arrays.toString(((RawId)id).getValue()) : id.getValue();
- }
-
- private static Object getBucketFrom(BucketGroupId id) {
- return id instanceof RawBucketId ? Arrays.toString(((RawBucketId)id).getFrom()) : id.getFrom();
- }
-
- private static Object getBucketTo(BucketGroupId id) {
- return id instanceof RawBucketId ? Arrays.toString(((RawBucketId)id).getTo()) : id.getTo();
- }
-
private static void renderContinuations(Map<String, Continuation> continuations, XMLWriter writer) {
for (Map.Entry<String, Continuation> entry : continuations.entrySet()) {
renderContinuation(entry.getKey(), entry.getValue(), writer);
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/result/RawBucketId.java b/container-search/src/main/java/com/yahoo/search/grouping/result/RawBucketId.java
index 129c6aadee8..dc8a2efb5cb 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/result/RawBucketId.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/result/RawBucketId.java
@@ -1,8 +1,7 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.result;
-import java.util.Arrays;
-import java.util.Base64;
+import com.yahoo.prelude.hitfield.RawBase64;
/**
* This class is used in {@link Group} instances where the identifying
@@ -10,7 +9,7 @@ import java.util.Base64;
*
* @author Ulf Lilleengen
*/
-public class RawBucketId extends BucketGroupId<byte[]> {
+public class RawBucketId extends BucketGroupId<RawBase64> {
/**
* Constructs a new instance of this class.
@@ -20,7 +19,7 @@ public class RawBucketId extends BucketGroupId<byte[]> {
*/
public RawBucketId(byte[] from, byte[] to) {
super("raw_bucket",
- from, Base64.getEncoder().withoutPadding().encodeToString(from),
- to, Base64.getEncoder().withoutPadding().encodeToString(to));
+ new RawBase64(from, true),
+ new RawBase64(to, true));
}
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/result/RawId.java b/container-search/src/main/java/com/yahoo/search/grouping/result/RawId.java
index f160f9b66af..f0ae9628c22 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/result/RawId.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/result/RawId.java
@@ -1,14 +1,14 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.result;
-import java.util.Base64;
+import com.yahoo.prelude.hitfield.RawBase64;
/**
* This class is used in {@link Group} instances where the identifying expression evaluated to a {@link Byte} array.
*
* @author Simon Thoresen Hult
*/
-public class RawId extends ValueGroupId<byte[]> {
+public class RawId extends ValueGroupId<RawBase64> {
/**
* Constructs a new instance of this class.
@@ -16,6 +16,6 @@ public class RawId extends ValueGroupId<byte[]> {
* @param value The identifying byte array.
*/
public RawId(byte[] value) {
- super("raw", value, Base64.getEncoder().withoutPadding().encodeToString(value));
+ super("raw", new RawBase64(value, true));
}
}
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/compiled/Binding.java b/container-search/src/main/java/com/yahoo/search/query/profile/compiled/Binding.java
index 99c3477274d..01bbef13129 100644
--- a/container-search/src/main/java/com/yahoo/search/query/profile/compiled/Binding.java
+++ b/container-search/src/main/java/com/yahoo/search/query/profile/compiled/Binding.java
@@ -48,7 +48,7 @@ public class Binding implements Comparable<Binding> {
for (int i = 0; i <= maxDimensions; i++) {
String value = i < dimensionBinding.getDimensions().size() ? dimensionBinding.getValues().get(i) : null;
if (value == null)
- generality += Math.pow(2, maxDimensions - i-1);
+ generality += (int)Math.pow(2, maxDimensions - i - 1);
else
context.put(dimensionBinding.getDimensions().get(i), value);
}
diff --git a/container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java b/container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java
index 500227e2607..90f4e6ae65c 100644
--- a/container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java
+++ b/container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java
@@ -32,8 +32,6 @@ import com.yahoo.search.grouping.result.AbstractList;
import com.yahoo.search.grouping.result.BucketGroupId;
import com.yahoo.search.grouping.result.Group;
import com.yahoo.search.grouping.result.GroupId;
-import com.yahoo.search.grouping.result.RawBucketId;
-import com.yahoo.search.grouping.result.RawId;
import com.yahoo.search.grouping.result.RootGroup;
import com.yahoo.search.grouping.result.ValueGroupId;
import com.yahoo.search.result.Coverage;
@@ -57,7 +55,6 @@ import java.math.BigDecimal;
import java.math.BigInteger;
import java.nio.charset.StandardCharsets;
import java.util.ArrayDeque;
-import java.util.Base64;
import java.util.Deque;
import java.util.Map;
import java.util.Optional;
@@ -423,34 +420,16 @@ public class JsonRenderer extends AsynchronousSectionedRenderer<Result> {
if (!(id instanceof ValueGroupId<?> || id instanceof BucketGroupId)) return;
if (id instanceof ValueGroupId<?> valueId) {
- generator.writeStringField(GROUPING_VALUE, getIdValue(valueId));
+ generator.writeStringField(GROUPING_VALUE, valueId.getValue().toString());
} else {
BucketGroupId<?> bucketId = (BucketGroupId<?>) id;
generator.writeObjectFieldStart(BUCKET_LIMITS);
- generator.writeStringField(BUCKET_FROM, getBucketFrom(bucketId));
- generator.writeStringField(BUCKET_TO, getBucketTo(bucketId));
+ generator.writeStringField(BUCKET_FROM, bucketId.getFrom().toString());
+ generator.writeStringField(BUCKET_TO, bucketId.getTo().toString());
generator.writeEndObject();
}
}
- private static String getIdValue(ValueGroupId<?> id) {
- return (id instanceof RawId raw)
- ? Base64.getEncoder().withoutPadding().encodeToString(raw.getValue())
- : id.getValue().toString();
- }
-
- private static String getBucketFrom(BucketGroupId<?> id) {
- if (id instanceof RawBucketId rawBucketId)
- return Base64.getEncoder().withoutPadding().encodeToString(rawBucketId.getFrom());
- return id.getFrom().toString();
- }
-
- private static String getBucketTo(BucketGroupId<?> id) {
- if (id instanceof RawBucketId rawBucketId)
- return Base64.getEncoder().withoutPadding().encodeToString(rawBucketId.getTo());
- return id.getTo().toString();
- }
-
protected void renderTotalHitCount(Hit hit) throws IOException {
if ( ! (getRecursionLevel() == 1 && hit instanceof HitGroup)) return;
diff --git a/container-search/src/test/java/com/yahoo/search/grouping/result/GroupIdTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/result/GroupIdTestCase.java
index f986c593fae..bdc52685140 100644
--- a/container-search/src/test/java/com/yahoo/search/grouping/result/GroupIdTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/grouping/result/GroupIdTestCase.java
@@ -1,6 +1,7 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.result;
+import com.yahoo.prelude.hitfield.RawBase64;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
@@ -25,10 +26,10 @@ public class GroupIdTestCase {
assertEquals(9L, rangeId.getTo());
valueId = new RawId(new byte[]{6, 9});
- assertArrayEquals(new byte[]{6, 9}, (byte[]) valueId.getValue());
+ assertEquals(new RawBase64(new byte[]{6, 9}, true), valueId.getValue());
rangeId = new RawBucketId(new byte[]{6, 9}, new byte[]{9, 6});
- assertArrayEquals(new byte[]{6, 9}, (byte[]) rangeId.getFrom());
- assertArrayEquals(new byte[]{9, 6}, (byte[]) rangeId.getTo());
+ assertEquals(new RawBase64(new byte[]{6, 9}, true), rangeId.getFrom());
+ assertEquals(new RawBase64(new byte[]{9, 6}, true), rangeId.getTo());
valueId = new StringId("69");
assertEquals("69", valueId.getValue());
diff --git a/container-search/src/test/java/com/yahoo/search/grouping/result/HitRendererTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/result/HitRendererTestCase.java
index 8e98f49df48..69bd848ebcd 100644
--- a/container-search/src/test/java/com/yahoo/search/grouping/result/HitRendererTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/grouping/result/HitRendererTestCase.java
@@ -57,7 +57,7 @@ public class HitRendererTestCase {
"</group>\n");
assertRender(newGroup(new RawId(Utf8.toBytes("foo"))),
"<group relevance=\"1.0\">\n" +
- "<id type=\"raw\">[102, 111, 111]</id>\n" +
+ "<id type=\"raw\">Zm9v</id>\n" +
"</group>\n");
assertRender(newGroup(new StringId("foo")),
"<group relevance=\"1.0\">\n" +
@@ -85,7 +85,7 @@ public class HitRendererTestCase {
"</group>\n");
assertRender(newGroup(new RawBucketId(Utf8.toBytes("bar"), Utf8.toBytes("baz"))),
"<group relevance=\"1.0\">\n" +
- "<id type=\"raw_bucket\">\n<from>[98, 97, 114]</from>\n<to>[98, 97, 122]</to>\n</id>\n" +
+ "<id type=\"raw_bucket\">\n<from>YmFy</from>\n<to>YmF6</to>\n</id>\n" +
"</group>\n");
}
diff --git a/document/src/main/java/com/yahoo/document/serialization/DocumentUpdateFlags.java b/document/src/main/java/com/yahoo/document/serialization/DocumentUpdateFlags.java
index e3510676148..11ded80ed2a 100644
--- a/document/src/main/java/com/yahoo/document/serialization/DocumentUpdateFlags.java
+++ b/document/src/main/java/com/yahoo/document/serialization/DocumentUpdateFlags.java
@@ -23,7 +23,7 @@ public class DocumentUpdateFlags {
}
public void setCreateIfNonExistent(boolean value) {
flags &= ~1; // clear flag
- flags |= value ? 1 : 0; // set flag
+ flags |= value ? (byte)1 : (byte)0; // set flag
}
public int injectInto(int value) {
return extractValue(value) | (flags << 28);
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ExportPackagesIT.java b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ExportPackagesIT.java
index e9aba0893f9..7ec3406be1f 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ExportPackagesIT.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ExportPackagesIT.java
@@ -62,8 +62,8 @@ public class ExportPackagesIT {
String expectedValue = expectedProperties.getProperty(ExportPackages.EXPORT_PACKAGES);
assertNotNull(expectedValue, "Missing exportPackages property in file.");
- Set<String> actualPackages = getPackages(actualValue);
- Set<String> expectedPackages = getPackages(expectedValue);
+ Set<String> actualPackages = removeNewPackageOnJava20(removeJavaVersion(getPackages(actualValue)));
+ Set<String> expectedPackages = removeNewPackageOnJava20(removeJavaVersion(getPackages(expectedValue)));
if (!actualPackages.equals(expectedPackages)) {
StringBuilder message = getDiff(actualPackages, expectedPackages);
message.append("\n\nIf this test fails due to an intentional change in exported packages, run the following command:\n")
@@ -73,6 +73,14 @@ public class ExportPackagesIT {
}
}
+ private static Set<String> removeJavaVersion(Set<String> packages) {
+ return packages.stream().map(p -> p.replaceAll(".JavaSE_\\d+", "")).collect(Collectors.toSet());
+ }
+
+ private static Set<String> removeNewPackageOnJava20(Set<String> packages) {
+ return packages.stream().filter(p -> ! p.contains("java.lang.foreign")).collect(Collectors.toSet());
+ }
+
private static StringBuilder getDiff(Set<String> actual, Set<String> expected) {
StringBuilder sb = new StringBuilder();
Set<String> onlyInActual = onlyInSet1(actual, expected);
diff --git a/model-integration/src/main/java/ai/vespa/embedding/BertBaseEmbedder.java b/model-integration/src/main/java/ai/vespa/embedding/BertBaseEmbedder.java
index b40e2b5be72..bf56d233f89 100644
--- a/model-integration/src/main/java/ai/vespa/embedding/BertBaseEmbedder.java
+++ b/model-integration/src/main/java/ai/vespa/embedding/BertBaseEmbedder.java
@@ -32,10 +32,9 @@ import java.util.Map;
*/
public class BertBaseEmbedder extends AbstractComponent implements Embedder {
- private final static int TOKEN_CLS = 101; // [CLS]
- private final static int TOKEN_SEP = 102; // [SEP]
-
private final int maxTokens;
+ private final int startSequenceToken;
+ private final int endSequenceToken;
private final String inputIdsName;
private final String attentionMaskName;
private final String tokenTypeIdsName;
@@ -48,6 +47,8 @@ public class BertBaseEmbedder extends AbstractComponent implements Embedder {
@Inject
public BertBaseEmbedder(OnnxRuntime onnx, BertBaseEmbedderConfig config) {
maxTokens = config.transformerMaxTokens();
+ startSequenceToken = config.transformerStartSequenceToken();
+ endSequenceToken = config.transformerEndSequenceToken();
inputIdsName = config.transformerInputIds();
attentionMaskName = config.transformerAttentionMask();
tokenTypeIdsName = config.transformerTokenTypeIds();
@@ -98,7 +99,7 @@ public class BertBaseEmbedder extends AbstractComponent implements Embedder {
if (!type.dimensions().get(0).isIndexed()) {
throw new IllegalArgumentException("Error in embedding to type '" + type + "': dimension should be indexed.");
}
- List<Integer> tokens = embedWithSeperatorTokens(text, context, maxTokens);
+ List<Integer> tokens = embedWithSeparatorTokens(text, context, maxTokens);
return embedTokens(tokens, type);
}
@@ -109,6 +110,7 @@ public class BertBaseEmbedder extends AbstractComponent implements Embedder {
Tensor attentionMask = createAttentionMask(inputSequence);
Tensor tokenTypeIds = createTokenTypeIds(inputSequence);
+
Map<String, Tensor> inputs;
if (!"".equals(tokenTypeIdsName)) {
inputs = Map.of(inputIdsName, inputSequence.expand("d0"),
@@ -138,14 +140,14 @@ public class BertBaseEmbedder extends AbstractComponent implements Embedder {
return builder.build();
}
- private List<Integer> embedWithSeperatorTokens(String text, Context context, int maxLength) {
+ private List<Integer> embedWithSeparatorTokens(String text, Context context, int maxLength) {
List<Integer> tokens = new ArrayList<>();
- tokens.add(TOKEN_CLS);
+ tokens.add(startSequenceToken);
tokens.addAll(embed(text, context));
- tokens.add(TOKEN_SEP);
+ tokens.add(endSequenceToken);
if (tokens.size() > maxLength) {
tokens = tokens.subList(0, maxLength-1);
- tokens.add(TOKEN_SEP);
+ tokens.add(endSequenceToken);
}
return tokens;
}
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/OrderedTensorType.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/OrderedTensorType.java
index ceb9a27924d..eee60d56c55 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/OrderedTensorType.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/OrderedTensorType.java
@@ -96,14 +96,14 @@ public class OrderedTensorType {
* so that they are correctly laid out in memory for Vespa.
* Used when importing tensors.
*/
- public int toDirectIndex(int index) {
+ public long toDirectIndex(int index) {
if (dimensions.size() == 0) {
return 0;
}
if (dimensionMap == null) {
throw new IllegalArgumentException("Dimension map is not available");
}
- int directIndex = 0;
+ long directIndex = 0;
long rest = index;
for (int i = 0; i < dimensions.size(); ++i) {
long address = rest / innerSizesOriginal[i];
diff --git a/model-integration/src/main/resources/configdefinitions/embedding.bert-base-embedder.def b/model-integration/src/main/resources/configdefinitions/embedding.bert-base-embedder.def
index 14d953eeef9..ef42d81e1fe 100644
--- a/model-integration/src/main/resources/configdefinitions/embedding.bert-base-embedder.def
+++ b/model-integration/src/main/resources/configdefinitions/embedding.bert-base-embedder.def
@@ -17,6 +17,10 @@ transformerInputIds string default=input_ids
transformerAttentionMask string default=attention_mask
transformerTokenTypeIds string default=token_type_ids
+# special token ids
+transformerStartSequenceToken int default=101
+transformerEndSequenceToken int default=102
+
# Output name
transformerOutput string default=output_0
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/CapacityChecker.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/CapacityChecker.java
index c8b736cb25b..f3ea326a3c0 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/CapacityChecker.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/CapacityChecker.java
@@ -130,7 +130,7 @@ public class CapacityChecker {
Set<String> ipPool = host.ipConfig().pool().asSet();
for (var child : nodeChildren.get(host)) {
hostResources = hostResources.subtract(child.resources().justNumbers());
- occupiedIps += child.ipConfig().primary().stream().filter(ipPool::contains).count();
+ occupiedIps += (int)child.ipConfig().primary().stream().filter(ipPool::contains).count();
}
availableResources.put(host, new AllocationResources(hostResources, host.ipConfig().pool().asSet().size() - occupiedIps));
}
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/benchmarks/ResultMetrics.java b/predicate-search/src/main/java/com/yahoo/search/predicate/benchmarks/ResultMetrics.java
index 11103a2a66a..ef65d9e2efa 100644
--- a/predicate-search/src/main/java/com/yahoo/search/predicate/benchmarks/ResultMetrics.java
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/benchmarks/ResultMetrics.java
@@ -62,8 +62,8 @@ public class ResultMetrics {
}
private double percentile(double percentile) {
- int targetCount = (int) Math.round(totalQueries * percentile);
- int currentCount = 0;
+ long targetCount = Math.round(totalQueries * percentile);
+ long currentCount = 0;
int index = 0;
while (currentCount < targetCount && index < SLOTS) {
currentCount += latencyHistogram[index];
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/index/CachedPostingListCounter.java b/predicate-search/src/main/java/com/yahoo/search/predicate/index/CachedPostingListCounter.java
index e6db1dec7c3..eb8b0b9927b 100644
--- a/predicate-search/src/main/java/com/yahoo/search/predicate/index/CachedPostingListCounter.java
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/index/CachedPostingListCounter.java
@@ -75,7 +75,7 @@ public class CachedPostingListCounter {
private void countUsingBitVector(byte[] nPostingListsForDocument, int postingListBitmap) {
for (int docId = 0; docId < nDocuments; docId++) {
- nPostingListsForDocument[docId] += Integer.bitCount(bitVector[docId] & postingListBitmap);
+ nPostingListsForDocument[docId] += (byte)Integer.bitCount(bitVector[docId] & postingListBitmap);
}
}
@@ -88,8 +88,7 @@ public class CachedPostingListCounter {
}
public CachedPostingListCounter rebuildCache() {
- MinMaxPriorityQueue<Entry> mostExpensive = MinMaxPriorityQueue
- .maximumSize(32).expectedSize(32).create();
+ MinMaxPriorityQueue<Entry> mostExpensive = MinMaxPriorityQueue.maximumSize(32).expectedSize(32).create();
synchronized (this) {
for (ObjectLongPair<int[]> p : frequency.keyValuesView()) {
mostExpensive.add(new Entry(p.getOne(), p.getTwo()));
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/Int16ResultNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/Int16ResultNode.java
index ae7d0a67b2f..b0f98685578 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/Int16ResultNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/Int16ResultNode.java
@@ -80,7 +80,7 @@ public class Int16ResultNode extends NumericResultNode {
@Override
public void add(ResultNode rhs) {
- value += rhs.getInteger();
+ value += (short)rhs.getInteger();
}
@Override
@@ -90,7 +90,7 @@ public class Int16ResultNode extends NumericResultNode {
@Override
public void multiply(ResultNode rhs) {
- value *= rhs.getInteger();
+ value *= (short)rhs.getInteger();
}
@Override
@@ -101,7 +101,7 @@ public class Int16ResultNode extends NumericResultNode {
@Override
public void modulo(ResultNode rhs) {
- value %= rhs.getInteger();
+ value %= (short)rhs.getInteger();
}
@Override
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/Int32ResultNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/Int32ResultNode.java
index da31cbc236a..711b8f1bd3f 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/Int32ResultNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/Int32ResultNode.java
@@ -80,7 +80,7 @@ public class Int32ResultNode extends NumericResultNode {
@Override
public void add(ResultNode rhs) {
- value += rhs.getInteger();
+ value += (int)rhs.getInteger();
}
@Override
@@ -90,7 +90,7 @@ public class Int32ResultNode extends NumericResultNode {
@Override
public void multiply(ResultNode rhs) {
- value *= rhs.getInteger();
+ value *= (int)rhs.getInteger();
}
@Override
@@ -101,7 +101,7 @@ public class Int32ResultNode extends NumericResultNode {
@Override
public void modulo(ResultNode rhs) {
- value %= rhs.getInteger();
+ value %= (int)rhs.getInteger();
}
@Override
@@ -122,7 +122,7 @@ public class Int32ResultNode extends NumericResultNode {
@Override
public Object getNumber() {
- return Integer.valueOf(value);
+ return value;
}
@Override
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/Int8ResultNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/Int8ResultNode.java
index ae53cf45a6f..d6706ce1dfe 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/Int8ResultNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/Int8ResultNode.java
@@ -78,7 +78,7 @@ public class Int8ResultNode extends NumericResultNode {
@Override
public void add(ResultNode rhs) {
- value += rhs.getInteger();
+ value += (byte)rhs.getInteger();
}
@Override
@@ -88,7 +88,7 @@ public class Int8ResultNode extends NumericResultNode {
@Override
public void multiply(ResultNode rhs) {
- value *= rhs.getInteger();
+ value *= (byte)rhs.getInteger();
}
@Override
@@ -99,7 +99,7 @@ public class Int8ResultNode extends NumericResultNode {
@Override
public void modulo(ResultNode rhs) {
- value %= rhs.getInteger();
+ value %= (byte)rhs.getInteger();
}
@Override
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/FieldMatchMetrics.java b/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/FieldMatchMetrics.java
index 2b5efdb1ffe..5b6a53a7019 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/FieldMatchMetrics.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/FieldMatchMetrics.java
@@ -16,7 +16,7 @@ import static java.lang.Math.*;
public final class FieldMatchMetrics implements Cloneable {
/** The calculator creating this - given on initialization */
- private FieldMatchMetricsComputer source;
+ private final FieldMatchMetricsComputer source;
/** The trace accumulated during execution - empty if no tracing */
private final Trace trace = new Trace();
@@ -75,7 +75,7 @@ public final class FieldMatchMetrics implements Cloneable {
currentSequence=0;
segmentStarts.clear();
- queryLength=source.getQuery().getTerms().length;
+ queryLength = source.getQuery().getTerms().length;
}
/** Are these metrics representing a complete match */
@@ -93,7 +93,7 @@ public final class FieldMatchMetrics implements Cloneable {
*/
public float get(String name) {
try {
- Method getter=getClass().getMethod("get" + name.substring(0,1).toUpperCase() + name.substring(1));
+ Method getter = getClass().getMethod("get" + name.substring(0, 1).toUpperCase() + name.substring(1));
return ((Number)getter.invoke(this)).floatValue();
}
catch (NoSuchMethodException e) {
@@ -140,7 +140,7 @@ public final class FieldMatchMetrics implements Cloneable {
* segment or out of order
*/
public float getAbsoluteProximity() {
- if (pairs <1) return 0.1f;
+ if (pairs < 1) return 0.1f;
return proximity/pairs;
}
@@ -151,7 +151,7 @@ public final class FieldMatchMetrics implements Cloneable {
* following each other in sequence, and close to 0 if they are far from each other or out of order
*/
public float getUnweightedProximity() {
- if (pairs <1) return 1f;
+ if (pairs < 1) return 1f;
return unweightedProximity/pairs;
}
@@ -271,33 +271,33 @@ public final class FieldMatchMetrics implements Cloneable {
* <code>queryCompleteness * ( 1 - fieldCompletenessImportance) + fieldCompletenessImportance * fieldCompleteness</code>
*/
public float getCompleteness() {
- float fieldCompletenessImportance=source.getParameters().getFieldCompletenessImportance();
+ float fieldCompletenessImportance = source.getParameters().getFieldCompletenessImportance();
return getQueryCompleteness() * ( 1 - fieldCompletenessImportance) + fieldCompletenessImportance*getFieldCompleteness();
}
/** Returns how well the order of the terms agreed in segments: <code>1-outOfOrder/pairs</code> */
public float getOrderness() {
- if (pairs ==0) return 1f;
+ if (pairs == 0) return 1f;
return 1-(float)outOfOrder/pairs;
}
/** Returns the degree to which different terms are related (occurring in the same segment): <code>1-segments/(matches-1)</code> */
public float getRelatedness() {
- if (matches==0) return 0;
- if (matches==1) return 1;
- return 1-(float)(segments-1)/(matches-1);
+ if (matches == 0) return 0;
+ if (matches == 1) return 1;
+ return 1 - (float)(segments - 1) / (matches - 1);
}
/** Returns <code>longestSequence/matches</code> */
public float getLongestSequenceRatio() {
- if (matches==0) return 0;
- return (float)longestSequence/matches;
+ if (matches == 0) return 0;
+ return (float)longestSequence / matches;
}
/** Returns the closeness of the segments in the field: <code>1-segmentDistance/fieldLength</code> */
public float getSegmentProximity() {
- if (matches==0) return 0;
- return 1-segmentDistance/source.getField().terms().size();
+ if (matches == 0) return 0;
+ return 1 - segmentDistance / source.getField().terms().size();
}
/**
@@ -306,14 +306,14 @@ public final class FieldMatchMetrics implements Cloneable {
* This is absoluteProximity/average connectedness.
*/
public float getProximity() {
- float totalConnectedness=0;
- for (int i=1; i<queryLength; i++) {
- totalConnectedness+=Math.max(0.1,source.getQuery().getTerms()[i].getConnectedness());
+ float totalConnectedness = 0;
+ for (int i = 1; i < queryLength; i++) {
+ totalConnectedness += (float)Math.max(0.1, source.getQuery().getTerms()[i].getConnectedness());
}
- float averageConnectedness=0.1f;
- if (queryLength>1)
- averageConnectedness=totalConnectedness/(queryLength-1);
- return getAbsoluteProximity()/averageConnectedness;
+ float averageConnectedness = 0.1f;
+ if (queryLength > 1)
+ averageConnectedness = totalConnectedness / (queryLength - 1);
+ return getAbsoluteProximity() / averageConnectedness;
}
/**
@@ -378,7 +378,7 @@ public final class FieldMatchMetrics implements Cloneable {
* not only when the metrics are complete, because this metric is used to choose segments during calculation.</p>
*/
float getSegmentationScore() {
- if (segments==0) return 0;
+ if (segments == 0) return 0;
return getAbsoluteProximity() * getExactness() / (segments * segments);
}
@@ -389,7 +389,7 @@ public final class FieldMatchMetrics implements Cloneable {
/** Called once for every match */
void onMatch(int i, int j) {
- if (matches>=source.getField().terms().size()) return;
+ if (matches >= source.getField().terms().size()) return;
matches++;
weight += (float)source.getQuery().getTerms()[i].getWeight() / source.getQuery().getTotalTermWeight();
significance += source.getQuery().getTerms()[i].getSignificance() / source.getQuery().getTotalSignificance();
@@ -418,42 +418,42 @@ public final class FieldMatchMetrics implements Cloneable {
}
/** Called once when this value is calculated, before onComplete */
- void setOccurrence(float occurrence) { this.occurrence=occurrence; }
+ void setOccurrence(float occurrence) { this.occurrence = occurrence; }
/** Called once when this value is calculated, before onComplete */
- void setWeightedOccurrence(float weightedOccurrence) { this.weightedOccurrence=weightedOccurrence; }
+ void setWeightedOccurrence(float weightedOccurrence) { this.weightedOccurrence = weightedOccurrence; }
/** Called once when this value is calculated, before onComplete */
- void setAbsoluteOccurrence(float absoluteOccurrence) { this.absoluteOccurrence=absoluteOccurrence; }
+ void setAbsoluteOccurrence(float absoluteOccurrence) { this.absoluteOccurrence = absoluteOccurrence; }
/** Called once when this value is calculated, before onComplete */
- void setWeightedAbsoluteOccurrence(float weightedAbsoluteOccurrence) { this.weightedAbsoluteOccurrence=weightedAbsoluteOccurrence; }
+ void setWeightedAbsoluteOccurrence(float weightedAbsoluteOccurrence) { this.weightedAbsoluteOccurrence = weightedAbsoluteOccurrence; }
/** Called once when this value is calculated, before onComplete */
- void setSignificantOccurrence(float significantOccurrence) { this.significantOccurrence =significantOccurrence; }
+ void setSignificantOccurrence(float significantOccurrence) { this.significantOccurrence = significantOccurrence; }
/** Called once when matching is complete */
void onComplete() {
// segment distance - calculated from sorted segment starts
- if (segmentStarts.size()<=1) {
- segmentDistance=0;
+ if (segmentStarts.size() <= 1) {
+ segmentDistance = 0;
}
else {
Collections.sort(segmentStarts);
- for (int i=1; i<segmentStarts.size(); i++) {
- segmentDistance+=segmentStarts.get(i)-segmentStarts.get(i-1)+1;
+ for (int i = 1; i < segmentStarts.size(); i++) {
+ segmentDistance += segmentStarts.get(i) - segmentStarts.get(i - 1) + 1;
}
}
- if (head==-1) head=0;
- if (tail==-1) tail=0;
+ if (head == -1) head = 0;
+ if (tail == -1) tail = 0;
}
// Events on pairs ----------
/** Called when <i>any</i> pair is encountered */
void onPair(int i, int j, int previousJ) {
- int distance = j-previousJ-1;
+ int distance = j - previousJ - 1;
if (distance < 0) distance++; // Discontinuity where the two terms are in the same position
if (abs(distance) > source.getParameters().getProximityLimit()) return; // Contribution=0
@@ -463,7 +463,7 @@ public final class FieldMatchMetrics implements Cloneable {
unweightedProximity += pairProximity;
float connectedness = source.getQuery().getTerms()[i].getConnectedness();
- proximity += pow(pairProximity, connectedness/0.1) * max(0.1, connectedness);
+ proximity += (float)pow(pairProximity, connectedness / 0.1) * (float)max(0.1, connectedness);
pairs++;
}
@@ -498,8 +498,8 @@ public final class FieldMatchMetrics implements Cloneable {
@Override
public FieldMatchMetrics clone() {
try {
- FieldMatchMetrics clone=(FieldMatchMetrics)super.clone();
- clone.segmentStarts=new ArrayList<>(segmentStarts);
+ FieldMatchMetrics clone = (FieldMatchMetrics)super.clone();
+ clone.segmentStarts = new ArrayList<>(segmentStarts);
return clone;
}
catch (CloneNotSupportedException e) {
@@ -514,19 +514,19 @@ public final class FieldMatchMetrics implements Cloneable {
public String toStringDump() {
try {
- StringBuilder b=new StringBuilder();
+ StringBuilder b = new StringBuilder();
for (Method m : this.getClass().getDeclaredMethods()) {
if ( ! m.getName().startsWith("get")) continue;
- if (m.getReturnType()!=Integer.TYPE && m.getReturnType()!=Float.TYPE) continue;
- if ( m.getParameterTypes().length!=0 ) continue;
+ if (m.getReturnType() != Integer.TYPE && m.getReturnType() != Float.TYPE) continue;
+ if ( m.getParameterTypes().length != 0 ) continue;
- Object value=m.invoke(this,new Object[0]);
- b.append(m.getName().substring(3,4).toLowerCase() + m.getName().substring(4) + ": " + value + "\n");
+ Object value = m.invoke(this, new Object[0]);
+ b.append(m.getName().substring(3, 4).toLowerCase() + m.getName().substring(4) + ": " + value + "\n");
}
return b.toString();
}
catch (Exception e) {
- throw new RuntimeException("Programming error",e);
+ throw new RuntimeException("Programming error", e);
}
}
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/gbdtoptimization/GBDTNode.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/gbdtoptimization/GBDTNode.java
index 949e1f026f7..df721a4309e 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/gbdtoptimization/GBDTNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/gbdtoptimization/GBDTNode.java
@@ -70,13 +70,13 @@ public final class GBDTNode extends ExpressionNode {
int offset = (int)nextValue - MAX_LEAF_VALUE;
boolean comparisonIsTrue = false;
if (offset < MAX_VARIABLES) {
- comparisonIsTrue = context.getDouble(offset)<values[pc++];
+ comparisonIsTrue = context.getDouble(offset) < values[pc++];
}
- else if (offset < MAX_VARIABLES*2) {
- comparisonIsTrue = context.getDouble(offset-MAX_VARIABLES)==values[pc++];
+ else if (offset < MAX_VARIABLES * 2) {
+ comparisonIsTrue = context.getDouble(offset - MAX_VARIABLES) == values[pc++];
}
- else if (offset<MAX_VARIABLES*3) {
- double testValue = context.getDouble(offset-MAX_VARIABLES*2);
+ else if (offset < MAX_VARIABLES * 3) {
+ double testValue = context.getDouble(offset - MAX_VARIABLES * 2);
int setValuesLeft = (int)values[pc++];
while (setValuesLeft > 0) { // test each value in the set
setValuesLeft--;
@@ -88,13 +88,13 @@ public final class GBDTNode extends ExpressionNode {
pc += setValuesLeft; // jump to after the set
}
else { // offset<MAX_VARIABLES*4
- comparisonIsTrue = ! (context.getDouble(offset-MAX_VARIABLES*3)>=values[pc++]);
+ comparisonIsTrue = ! (context.getDouble(offset - MAX_VARIABLES * 3) >= values[pc++]);
}
if (comparisonIsTrue)
pc++; // true branch - skip the jump value
else
- pc += values[pc]; // false branch - jump
+ pc += (int)values[pc]; // false branch - jump
}
else { // a leaf
return nextValue;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/gbdt/GbdtConverterTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/gbdt/GbdtConverterTestCase.java
index d846d322720..8a33f320bb0 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/gbdt/GbdtConverterTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/gbdt/GbdtConverterTestCase.java
@@ -3,14 +3,12 @@ package com.yahoo.searchlib.gbdt;
import com.yahoo.searchlib.rankingexpression.RankingExpression;
import com.yahoo.searchlib.rankingexpression.parser.ParseException;
-import org.junit.After;
-import org.junit.Before;
import org.junit.Test;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.io.UnsupportedEncodingException;
-import java.security.Permission;
+import java.nio.charset.StandardCharsets;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertEquals;
@@ -21,36 +19,6 @@ import static org.junit.Assert.fail;
*/
public class GbdtConverterTestCase {
- @Before
- @SuppressWarnings("removal")
- public void enableSecurityManager() {
- System.setSecurityManager(new NoExitSecurityManager());
- }
-
- @After
- @SuppressWarnings("removal")
- public void disableSecurityManager() {
- System.setSecurityManager(null);
- }
-
- @Test
- public void testOnlyOneArgumentIsAccepted() throws UnsupportedEncodingException {
- assertError("Usage: GbdtConverter <filename>\n", new String[0]);
- assertError("Usage: GbdtConverter <filename>\n", new String[] { "foo", "bar" });
- }
-
- @Test
- public void testFileIsFound() throws UnsupportedEncodingException {
- assertError("Could not find file 'not.found'.\n", new String[] { "not.found" });
- }
-
- @Test
- public void testFileParsingExceptionIsCaught() throws UnsupportedEncodingException {
- assertError("An error occurred while parsing the content of file 'src/test/files/gbdt_err.xml': " +
- "Node 'Unknown' has no 'DecisionTree' children.\n",
- new String[] { "src/test/files/gbdt_err.xml" });
- }
-
@Test
public void testEmptyTreesAreIgnored() throws Exception {
assertConvert("src/test/files/gbdt_empty_tree.xml",
@@ -125,7 +93,7 @@ public class GbdtConverterTestCase {
ByteArrayOutputStream out = new ByteArrayOutputStream();
System.setOut(new PrintStream(out));
GbdtConverter.main(new String[] { gbdtModelFile });
- String actualExpression = out.toString("UTF-8");
+ String actualExpression = out.toString(StandardCharsets.UTF_8);
assertEquals(expectedExpression, actualExpression);
assertNotNull(new RankingExpression(actualExpression));
}
@@ -138,26 +106,7 @@ public class GbdtConverterTestCase {
fail();
} catch (ExitException e) {
assertEquals(1, e.status);
- assertEquals(expected, err.toString("UTF-8"));
- }
- }
-
- @SuppressWarnings("removal")
- private static class NoExitSecurityManager extends SecurityManager {
-
- @Override
- public void checkPermission(Permission perm) {
- // allow anything
- }
-
- @Override
- public void checkPermission(Permission perm, Object context) {
- // allow anything
- }
-
- @Override
- public void checkExit(int status) {
- throw new ExitException(status);
+ assertEquals(expected, err.toString(StandardCharsets.UTF_8));
}
}
@@ -169,4 +118,5 @@ public class GbdtConverterTestCase {
this.status = status;
}
}
+
}
diff --git a/security-utils/src/main/java/com/yahoo/security/SideChannelSafe.java b/security-utils/src/main/java/com/yahoo/security/SideChannelSafe.java
index 1f160d94c6a..bd085f6f624 100644
--- a/security-utils/src/main/java/com/yahoo/security/SideChannelSafe.java
+++ b/security-utils/src/main/java/com/yahoo/security/SideChannelSafe.java
@@ -46,7 +46,7 @@ public class SideChannelSafe {
// differed in any byte compared between the two arrays.
byte accu = 0;
for (int i = 0; i < lhs.length; ++i) {
- accu |= (lhs[i] ^ rhs[i]);
+ accu |= (byte)(lhs[i] ^ rhs[i]);
}
return (accu == 0);
}
diff --git a/security-utils/src/test/java/com/yahoo/security/SharedKeyTest.java b/security-utils/src/test/java/com/yahoo/security/SharedKeyTest.java
index 26627e9a5fa..90b8beb461f 100644
--- a/security-utils/src/test/java/com/yahoo/security/SharedKeyTest.java
+++ b/security-utils/src/test/java/com/yahoo/security/SharedKeyTest.java
@@ -285,12 +285,12 @@ public class SharedKeyTest {
String plaintext = "...hello world?";
byte[] encrypted = streamEncryptString(plaintext, myShared);
// Corrupt MAC tag in ciphertext
- encrypted[encrypted.length - 1] ^= 0x80;
+ encrypted[encrypted.length - 1] ^= (byte)0x80;
// We don't necessarily know _which_ exception is thrown, but one _should_ be thrown!
assertThrows(Exception.class, () -> doOutputStreamCipherDecrypt(myShared, encrypted));
// Also try with corrupted ciphertext (pre MAC tag)
- encrypted[encrypted.length - 1] ^= 0x80; // Flip MAC bit back to correct state
- encrypted[encrypted.length - 17] ^= 0x80; // Pre 128-bit MAC tag
+ encrypted[encrypted.length - 1] ^= (byte)0x80; // Flip MAC bit back to correct state
+ encrypted[encrypted.length - 17] ^= (byte)0x80; // Pre 128-bit MAC tag
assertThrows(Exception.class, () -> doOutputStreamCipherDecrypt(myShared, encrypted));
}
diff --git a/vdslib/src/main/java/com/yahoo/vdslib/distribution/Distribution.java b/vdslib/src/main/java/com/yahoo/vdslib/distribution/Distribution.java
index 9a451ac56ec..a83e2a4f89c 100644
--- a/vdslib/src/main/java/com/yahoo/vdslib/distribution/Distribution.java
+++ b/vdslib/src/main/java/com/yahoo/vdslib/distribution/Distribution.java
@@ -187,11 +187,11 @@ public class Distribution {
}
private int getStorageSeed(BucketId bucket, ClusterState state) {
- int seed = (int) lastNBits(bucket.getRawId(), state.getDistributionBitCount());
+ int seed = (int)lastNBits(bucket.getRawId(), state.getDistributionBitCount());
if (bucket.getUsedBits() > 33) {
int usedBits = bucket.getUsedBits() - 1;
- seed ^= lastNBits(bucket.getRawId() >> 32, usedBits - 32) << 6;
+ seed ^= (int)lastNBits(bucket.getRawId() >> 32, usedBits - 32) << 6;
}
return seed;
}
diff --git a/vespa-feed-client-api/pom.xml b/vespa-feed-client-api/pom.xml
index 5509c339eee..0782bb6b28e 100644
--- a/vespa-feed-client-api/pom.xml
+++ b/vespa-feed-client-api/pom.xml
@@ -42,6 +42,12 @@
<configuration>
<release>${vespaClients.jdk.releaseVersion}</release>
<showDeprecation>true</showDeprecation>
+ <compilerArgs> <!-- Remove (to use default) when not compiling for 8 -->
+ <arg>-Xlint:all</arg>
+ <arg>-Xlint:-rawtypes</arg>
+ <arg>-Xlint:-unchecked</arg>
+ <arg>-Xlint:-serial</arg>
+ </compilerArgs>
</configuration>
</plugin>
<plugin>
diff --git a/vespa-feed-client-cli/pom.xml b/vespa-feed-client-cli/pom.xml
index 46679906fc4..b917a39b675 100644
--- a/vespa-feed-client-cli/pom.xml
+++ b/vespa-feed-client-cli/pom.xml
@@ -53,6 +53,12 @@
<configuration>
<release>${vespaClients.jdk.releaseVersion}</release>
<showDeprecation>true</showDeprecation>
+ <compilerArgs> <!-- Remove (to use default) when not compiling for 8 -->
+ <arg>-Xlint:all</arg>
+ <arg>-Xlint:-rawtypes</arg>
+ <arg>-Xlint:-unchecked</arg>
+ <arg>-Xlint:-serial</arg>
+ </compilerArgs>
</configuration>
</plugin>
<plugin>
diff --git a/vespa-feed-client/pom.xml b/vespa-feed-client/pom.xml
index 01b9b00b8a0..b6440653a78 100644
--- a/vespa-feed-client/pom.xml
+++ b/vespa-feed-client/pom.xml
@@ -65,6 +65,12 @@
<goal>compile</goal>
</goals>
<configuration>
+ <compilerArgs> <!-- Remove (to use default) when not compiling for 8 -->
+ <arg>-Xlint:all</arg>
+ <arg>-Xlint:-rawtypes</arg>
+ <arg>-Xlint:-unchecked</arg>
+ <arg>-Xlint:-serial</arg>
+ </compilerArgs>
<release>${vespaClients.jdk.releaseVersion}</release>
<showDeprecation>true</showDeprecation>
</configuration>
diff --git a/vespajlib/src/main/java/com/yahoo/slime/BinaryEncoder.java b/vespajlib/src/main/java/com/yahoo/slime/BinaryEncoder.java
index f12496f7a76..e0b4fb2c672 100644
--- a/vespajlib/src/main/java/com/yahoo/slime/BinaryEncoder.java
+++ b/vespajlib/src/main/java/com/yahoo/slime/BinaryEncoder.java
@@ -28,7 +28,7 @@ final class BinaryEncoder implements ArrayTraverser, ObjectSymbolTraverser {
byte next = (byte)(value & 0x7f);
value >>>= 7; // unsigned shift
while (value != 0) {
- next |= 0x80;
+ next |= (byte)0x80;
out.put(next);
next = (byte)(value & 0x7f);
value >>>= 7;
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/ReduceJoin.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/ReduceJoin.java
index 11996b6a23d..de1c30e6414 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/functions/ReduceJoin.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/ReduceJoin.java
@@ -333,7 +333,7 @@ public class ReduceJoin<NAMETYPE extends Name> extends CompositeTensorFunction<N
private final long[] bounds;
private final long[] iterator;
- private int remaining;
+ private long remaining;
MultiDimensionIterator(TensorType type) {
bounds = new long[type.dimensions().size()];
diff --git a/vespajlib/src/test/java/com/yahoo/io/FatalErrorHandlerTestCase.java b/vespajlib/src/test/java/com/yahoo/io/FatalErrorHandlerTestCase.java
deleted file mode 100644
index dab91b6a995..00000000000
--- a/vespajlib/src/test/java/com/yahoo/io/FatalErrorHandlerTestCase.java
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.io;
-
-import static org.junit.Assert.*;
-
-import java.security.Permission;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-/**
- * Just to remove noise from the coverage report.
- *
- * @author Steinar Knutsen
- */
-public class FatalErrorHandlerTestCase {
- @SuppressWarnings("removal")
- private static final class AvoidExiting extends SecurityManager {
-
- @Override
- public void checkPermission(Permission perm) {
- }
-
- @Override
- public void checkExit(int status) {
- throw new SecurityException();
- }
-
- }
-
- private FatalErrorHandler h;
-
- @Before
- @SuppressWarnings("removal")
- public void setUp() throws Exception {
- h = new FatalErrorHandler();
- System.setSecurityManager(new AvoidExiting());
- }
-
- @After
- @SuppressWarnings("removal")
- public void tearDown() throws Exception {
- System.setSecurityManager(null);
- }
-
- @Test
- public final void testHandle() {
- boolean caught = false;
- try {
- h.handle(new Throwable(), "abc");
- } catch (SecurityException e) {
- caught = true;
- }
- assertTrue(caught);
- }
-
-}