aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--client/js/app/package.json2
-rw-r--r--client/js/app/yarn.lock150
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java2
-rw-r--r--config-model/src/main/resources/schema/containercluster.rnc2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/xml/JettyContainerModelBuilderTest.java14
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTestCase.java27
-rw-r--r--container-dependency-versions/pom.xml2
-rw-r--r--dependency-versions/pom.xml6
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/Flags.java9
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/custom/Role.java55
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/custom/RoleList.java45
-rw-r--r--flags/src/test/java/com/yahoo/vespa/flags/custom/RoleTest.java56
-rw-r--r--parent/pom.xml2
-rw-r--r--searchlib/src/tests/attribute/direct_multi_term_blueprint/direct_multi_term_blueprint_test.cpp9
-rw-r--r--searchlib/src/vespa/searchlib/attribute/posting_iterator_pack.cpp38
-rw-r--r--searchlib/src/vespa/searchlib/attribute/posting_iterator_pack.h12
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/iterator_pack.cpp41
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/iterator_pack.h26
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/weighted_set_term_search.cpp30
-rw-r--r--vespa-dependencies-enforcer/allowed-maven-dependencies.txt4
-rw-r--r--zkfacade/pom.xml2
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/NodeCacheWrapper.java2
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/PathChildrenCacheWrapper.java3
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/SingletonManager.java2
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/mock/MockCuratorFramework.java3
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/CuratorCreateOperation.java1
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/CuratorDeleteOperation.java1
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/CuratorOperation.java1
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/CuratorSetDataOperation.java1
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/CuratorTransaction.java1
-rw-r--r--zookeeper-server/zookeeper-server-3.9.2/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperAdminImpl.java3
-rw-r--r--zookeeper-server/zookeeper-server/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperAdminImpl.java2
32 files changed, 398 insertions, 156 deletions
diff --git a/client/js/app/package.json b/client/js/app/package.json
index 1cc2432f88f..6de98422514 100644
--- a/client/js/app/package.json
+++ b/client/js/app/package.json
@@ -25,7 +25,7 @@
"@mantine/notifications": "^5",
"@vitejs/plugin-react": "^4",
"esbuild-jest": "^0",
- "eslint": "^8",
+ "eslint": "^9.0.0",
"eslint-plugin-import": "^2",
"eslint-plugin-prettier": "^5",
"eslint-plugin-react": "^7",
diff --git a/client/js/app/yarn.lock b/client/js/app/yarn.lock
index 8993f580fd4..789267f9461 100644
--- a/client/js/app/yarn.lock
+++ b/client/js/app/yarn.lock
@@ -774,25 +774,25 @@
resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63"
integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==
-"@eslint/eslintrc@^2.1.4":
- version "2.1.4"
- resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad"
- integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==
+"@eslint/eslintrc@^3.0.2":
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.0.2.tgz#36180f8e85bf34d2fe3ccc2261e8e204a411ab4e"
+ integrity sha512-wV19ZEGEMAC1eHgrS7UQPqsdEiCIbTKTasEfcXAigzoXICcqZSjBZEHlZwNVvKg6UBCjSlos84XiLqsRJnIcIg==
dependencies:
ajv "^6.12.4"
debug "^4.3.2"
- espree "^9.6.0"
- globals "^13.19.0"
+ espree "^10.0.1"
+ globals "^14.0.0"
ignore "^5.2.0"
import-fresh "^3.2.1"
js-yaml "^4.1.0"
minimatch "^3.1.2"
strip-json-comments "^3.1.1"
-"@eslint/js@8.57.0":
- version "8.57.0"
- resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f"
- integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==
+"@eslint/js@9.0.0":
+ version "9.0.0"
+ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.0.0.tgz#1a9e4b4c96d8c7886e0110ed310a0135144a1691"
+ integrity sha512-RThY/MnKrhubF6+s1JflwUjPEsnCEmYCWwqa/aRISKWNXGZ9epUwft4bUMM35SdKF9xvBrLydAM1RDHd1Z//ZQ==
"@floating-ui/core@^1.4.2":
version "1.5.0"
@@ -863,12 +863,12 @@
dependencies:
prop-types "^15.8.1"
-"@humanwhocodes/config-array@^0.11.14":
- version "0.11.14"
- resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b"
- integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==
+"@humanwhocodes/config-array@^0.12.3":
+ version "0.12.3"
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.12.3.tgz#a6216d90f81a30bedd1d4b5d799b47241f318072"
+ integrity sha512-jsNnTBlMWuTpDkeE3on7+dWJi0D6fdDfeANj/w7MpS8ztROCoLvIO2nG0CcFj+E4k8j4QrSTh4Oryi3i2G669g==
dependencies:
- "@humanwhocodes/object-schema" "^2.0.2"
+ "@humanwhocodes/object-schema" "^2.0.3"
debug "^4.3.1"
minimatch "^3.0.5"
@@ -877,10 +877,10 @@
resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c"
integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
-"@humanwhocodes/object-schema@^2.0.2":
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz#d9fae00a2d5cb40f92cfe64b47ad749fbc38f917"
- integrity sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==
+"@humanwhocodes/object-schema@^2.0.3":
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3"
+ integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==
"@istanbuljs/load-nyc-config@^1.0.0":
version "1.1.0"
@@ -1535,11 +1535,6 @@
dependencies:
"@types/yargs-parser" "*"
-"@ungap/structured-clone@^1.2.0":
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406"
- integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==
-
"@vitejs/plugin-react@^4":
version "4.2.1"
resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-4.2.1.tgz#744d8e4fcb120fc3dbaa471dadd3483f5a304bb9"
@@ -1556,7 +1551,7 @@ acorn-jsx@^5.3.2:
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
-acorn@^8.9.0:
+acorn@^8.11.3:
version "8.11.3"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a"
integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==
@@ -2302,13 +2297,6 @@ doctrine@^2.1.0:
dependencies:
esutils "^2.0.2"
-doctrine@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
- integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
- dependencies:
- esutils "^2.0.2"
-
dom-helpers@^5.0.1:
version "5.2.1"
resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902"
@@ -2652,54 +2640,55 @@ eslint-rule-composer@^0.3.0:
resolved "https://registry.yarnpkg.com/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz#79320c927b0c5c0d3d3d2b76c8b4a488f25bbaf9"
integrity sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==
-eslint-scope@^7.2.2:
- version "7.2.2"
- resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f"
- integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==
+eslint-scope@^8.0.1:
+ version "8.0.1"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.0.1.tgz#a9601e4b81a0b9171657c343fb13111688963cfc"
+ integrity sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==
dependencies:
esrecurse "^4.3.0"
estraverse "^5.2.0"
-eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3:
+eslint-visitor-keys@^3.3.0:
version "3.4.3"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800"
integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
-eslint@^8:
- version "8.57.0"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668"
- integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==
+eslint-visitor-keys@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz#e3adc021aa038a2a8e0b2f8b0ce8f66b9483b1fb"
+ integrity sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==
+
+eslint@^9.0.0:
+ version "9.0.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.0.0.tgz#6270548758e390343f78c8afd030566d86927d40"
+ integrity sha512-IMryZ5SudxzQvuod6rUdIUz29qFItWx281VhtFVc2Psy/ZhlCeD/5DT6lBIJ4H3G+iamGJoTln1v+QSuPw0p7Q==
dependencies:
"@eslint-community/eslint-utils" "^4.2.0"
"@eslint-community/regexpp" "^4.6.1"
- "@eslint/eslintrc" "^2.1.4"
- "@eslint/js" "8.57.0"
- "@humanwhocodes/config-array" "^0.11.14"
+ "@eslint/eslintrc" "^3.0.2"
+ "@eslint/js" "9.0.0"
+ "@humanwhocodes/config-array" "^0.12.3"
"@humanwhocodes/module-importer" "^1.0.1"
"@nodelib/fs.walk" "^1.2.8"
- "@ungap/structured-clone" "^1.2.0"
ajv "^6.12.4"
chalk "^4.0.0"
cross-spawn "^7.0.2"
debug "^4.3.2"
- doctrine "^3.0.0"
escape-string-regexp "^4.0.0"
- eslint-scope "^7.2.2"
- eslint-visitor-keys "^3.4.3"
- espree "^9.6.1"
+ eslint-scope "^8.0.1"
+ eslint-visitor-keys "^4.0.0"
+ espree "^10.0.1"
esquery "^1.4.2"
esutils "^2.0.2"
fast-deep-equal "^3.1.3"
- file-entry-cache "^6.0.1"
+ file-entry-cache "^8.0.0"
find-up "^5.0.0"
glob-parent "^6.0.2"
- globals "^13.19.0"
graphemer "^1.4.0"
ignore "^5.2.0"
imurmurhash "^0.1.4"
is-glob "^4.0.0"
is-path-inside "^3.0.3"
- js-yaml "^4.1.0"
json-stable-stringify-without-jsonify "^1.0.1"
levn "^0.4.1"
lodash.merge "^4.6.2"
@@ -2709,14 +2698,14 @@ eslint@^8:
strip-ansi "^6.0.1"
text-table "^0.2.0"
-espree@^9.6.0, espree@^9.6.1:
- version "9.6.1"
- resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f"
- integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==
+espree@^10.0.1:
+ version "10.0.1"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-10.0.1.tgz#600e60404157412751ba4a6f3a2ee1a42433139f"
+ integrity sha512-MWkrWZbJsL2UwnjxTX3gG8FneachS/Mwg7tdGXce011sJd5b0JG54vat5KHnfSBODZ3Wvzd2WnjxyzsRoVv+ww==
dependencies:
- acorn "^8.9.0"
+ acorn "^8.11.3"
acorn-jsx "^5.3.2"
- eslint-visitor-keys "^3.4.1"
+ eslint-visitor-keys "^4.0.0"
esprima@^4.0.0:
version "4.0.1"
@@ -2872,12 +2861,12 @@ fb-watchman@^2.0.0:
dependencies:
bser "2.1.1"
-file-entry-cache@^6.0.1:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027"
- integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==
+file-entry-cache@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f"
+ integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==
dependencies:
- flat-cache "^3.0.4"
+ flat-cache "^4.0.0"
fill-range@^4.0.0:
version "4.0.0"
@@ -2917,14 +2906,13 @@ find-up@^5.0.0:
locate-path "^6.0.0"
path-exists "^4.0.0"
-flat-cache@^3.0.4:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee"
- integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==
+flat-cache@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c"
+ integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==
dependencies:
flatted "^3.2.9"
- keyv "^4.5.3"
- rimraf "^3.0.2"
+ keyv "^4.5.4"
flatted@^3.2.9:
version "3.3.1"
@@ -3061,12 +3049,10 @@ globals@^11.1.0:
resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
-globals@^13.19.0:
- version "13.24.0"
- resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171"
- integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==
- dependencies:
- type-fest "^0.20.2"
+globals@^14.0.0:
+ version "14.0.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e"
+ integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==
globalthis@^1.0.3:
version "1.0.3"
@@ -4104,7 +4090,7 @@ json5@^2.2.2, json5@^2.2.3:
object.assign "^4.1.4"
object.values "^1.1.6"
-keyv@^4.5.3:
+keyv@^4.5.4:
version "4.5.4"
resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93"
integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==
@@ -4892,13 +4878,6 @@ reusify@^1.0.4:
resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
-rimraf@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
- integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
- dependencies:
- glob "^7.1.3"
-
rollup@^4.13.0:
version "4.14.0"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.14.0.tgz#c3e2cd479f1b2358b65c1f810fa05b51603d7be8"
@@ -5395,11 +5374,6 @@ type-detect@4.0.8:
resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
-type-fest@^0.20.2:
- version "0.20.2"
- resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
- integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
-
type-fest@^0.21.3:
version "0.21.3"
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37"
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java
index eac03531b86..4abd6e89b15 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java
@@ -1002,7 +1002,7 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
return containers;
} else if (nodesElement.hasAttribute("count")) // regular, hosted node spec
return createNodesFromNodeCount(cluster, containerElement, nodesElement, context);
- else if (cluster.isHostedVespa() && cluster.getZone().environment().isManuallyDeployed()) // default to 1 in manual zones
+ else if (cluster.isHostedVespa()) // default to 1 if node count is not specified
return createNodesFromNodeCount(cluster, containerElement, nodesElement, context);
else // the non-hosted option
return createNodesFromNodeList(context.getDeployState(), cluster, nodesElement);
diff --git a/config-model/src/main/resources/schema/containercluster.rnc b/config-model/src/main/resources/schema/containercluster.rnc
index f24a1511318..9beaf7b7783 100644
--- a/config-model/src/main/resources/schema/containercluster.rnc
+++ b/config-model/src/main/resources/schema/containercluster.rnc
@@ -307,7 +307,7 @@ NodesOfContainerCluster = element nodes {
attribute type { xsd:string }
|
(
- attribute count { xsd:positiveInteger | xsd:string } &
+ attribute count { xsd:positiveInteger | xsd:string }? &
attribute flavor { xsd:string }? &
attribute required { xsd:boolean }? &
attribute exclusive { xsd:boolean }? &
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/JettyContainerModelBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/JettyContainerModelBuilderTest.java
index 934606b93ac..c4fc4ee71c6 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/JettyContainerModelBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/JettyContainerModelBuilderTest.java
@@ -6,6 +6,7 @@ import com.yahoo.config.model.builder.xml.test.DomBuilderTest;
import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.config.model.provision.HostsXmlProvisioner;
+import com.yahoo.config.model.provision.InMemoryProvisioner;
import com.yahoo.config.model.test.MockRoot;
import com.yahoo.container.ComponentsConfig;
import com.yahoo.container.jdisc.FilterBindingsProvider;
@@ -254,25 +255,16 @@ public class JettyContainerModelBuilderTest extends ContainerModelBuilderTestBas
" <server port='8080' id='default'>",
" </server>",
" </http>",
- multiNode,
+ " <nodes count='1' />",
"",
"</container>");
- String hostsxml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n" +
- "<hosts>\n" +
- " <host name=\"mockhost-1\">\n" +
- " <alias>mockhost1</alias>\n" +
- " </host>\n" +
- " <host name=\"mockhost-2\">\n" +
- " <alias>mockhost2</alias>\n" +
- " </host>\n" +
- "</hosts>\n";
DeployState deployState = new DeployState.Builder()
.properties(
new TestProperties()
.setHostedVespa(true)
.setEndpointCertificateSecrets(Optional.of(new EndpointCertificateSecrets("CERT", "KEY"))))
- .modelHostProvisioner(new HostsXmlProvisioner(new StringReader(hostsxml)))
+ .modelHostProvisioner(new InMemoryProvisioner(1, true))
.build();
MockRoot root = new MockRoot("root", deployState);
createModel(root, deployState, null, clusterElem);
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTestCase.java b/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTestCase.java
index 69abb10b91d..c7d9ae6b818 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTestCase.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTestCase.java
@@ -20,6 +20,9 @@ import com.yahoo.config.model.test.MockApplicationPackage;
import com.yahoo.config.model.test.TestDriver;
import com.yahoo.config.provision.AllocatedHosts;
import com.yahoo.config.provision.ApplicationId;
+import com.yahoo.config.provision.Environment;
+import com.yahoo.config.provision.RegionName;
+import com.yahoo.config.provision.Zone;
import com.yahoo.document.config.DocumentmanagerConfig;
import com.yahoo.messagebus.MessagebusConfig;
import com.yahoo.net.HostName;
@@ -309,6 +312,30 @@ public class VespaModelTestCase {
assertContainsWarning(logger.msgs, "Directory searchdefinitions/ should not be used for schemas, use schemas/ instead");
}
+ @Test
+ void testNoNodesCount() {
+ var services =
+ """
+ <services version='1.0'>
+ <container version='1.0' id='default'>
+ <search/>
+ <nodes>
+ <resources disk="24Gb" />
+ </nodes>
+ </container>
+ </services>""";
+
+ var app = new MockApplicationPackage.Builder().withServices(services).build();
+ var deployState = new DeployState.Builder()
+ .applicationPackage(app)
+ .properties(new TestProperties()
+ .setHostedVespa(true)
+ .setApplicationId(ApplicationId.from("foo", "bar", "default-t")))
+ .build();
+ var model = new TestDriver(true).buildModel(deployState);
+ assertEquals(1, model.getHosts().size()); // node count 1 if not specified
+ }
+
private void assertContainsWarning(List<Pair<Level,String>> msgs, String text) {
boolean foundCorrectWarning = false;
for (var msg : msgs)
diff --git a/container-dependency-versions/pom.xml b/container-dependency-versions/pom.xml
index bd1cbf8fcf6..8eaa961922d 100644
--- a/container-dependency-versions/pom.xml
+++ b/container-dependency-versions/pom.xml
@@ -124,7 +124,7 @@
<!-- TODO Vespa 9: stop exporting/providing and move to parent? -->
<groupId>com.sun.activation</groupId>
<artifactId>javax.activation</artifactId>
- <version>1.2.0</version>
+ <version>${sun.javax.activation.vespa.version}</version>
</dependency>
<!-- jaxb end -->
diff --git a/dependency-versions/pom.xml b/dependency-versions/pom.xml
index 9ce3fdc134d..a21620b5cc5 100644
--- a/dependency-versions/pom.xml
+++ b/dependency-versions/pom.xml
@@ -40,6 +40,7 @@
<jackson2.vespa.version>2.16.2</jackson2.vespa.version>
<jackson-databind.vespa.version>${jackson2.vespa.version}</jackson-databind.vespa.version>
<jakarta.inject.vespa.version>2.0.1</jakarta.inject.vespa.version>
+ <javax.activation-api.vespa.version>1.2.0</javax.activation-api.vespa.version>
<javax.inject.vespa.version>1</javax.inject.vespa.version>
<javax.servlet-api.vespa.version>3.1.0</javax.servlet-api.vespa.version>
<javax.ws.rs-api.vespa.version>2.1.1</javax.ws.rs-api.vespa.version>
@@ -47,6 +48,7 @@
<jaxb-core.vespa.version>2.3.0.1</jaxb-core.vespa.version>
<jaxb-impl.vespa.version>2.3.0</jaxb-impl.vespa.version>
<slf4j.vespa.version>1.7.36</slf4j.vespa.version>
+ <sun.javax.activation.vespa.version>1.2.0</sun.javax.activation.vespa.version>
<!-- END Dependencies available from the Jdisc container -->
@@ -66,7 +68,7 @@
<assertj.vespa.version>3.25.3</assertj.vespa.version>
<!-- Athenz dependencies. Make sure these dependencies match those in Vespa's internal repositories -->
- <aws-sdk.vespa.version>1.12.695</aws-sdk.vespa.version>
+ <aws-sdk.vespa.version>1.12.696</aws-sdk.vespa.version>
<athenz.vespa.version>1.11.55</athenz.vespa.version>
<!-- Athenz END -->
@@ -139,7 +141,7 @@
<protobuf.vespa.version>3.25.3</protobuf.vespa.version>
<questdb.vespa.version>7.3.10</questdb.vespa.version>
<spifly.vespa.version>1.3.7</spifly.vespa.version>
- <spotbugs.vespa.version>4.8.3</spotbugs.vespa.version> <!-- Must match major version in https://github.com/apache/zookeeper/blob/master/pom.xml -->
+ <spotbugs.vespa.version>4.8.4</spotbugs.vespa.version> <!-- Must match major version in https://github.com/apache/zookeeper/blob/master/pom.xml -->
<snappy.vespa.version>1.1.10.5</snappy.vespa.version>
<surefire.vespa.version>3.2.5</surefire.vespa.version>
<velocity.vespa.version>2.3</velocity.vespa.version>
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/Flags.java b/flags/src/main/java/com/yahoo/vespa/flags/Flags.java
index e038c96bf99..03a713f37f5 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/Flags.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/Flags.java
@@ -3,6 +3,7 @@ package com.yahoo.vespa.flags;
import com.yahoo.component.Vtag;
import com.yahoo.vespa.defaults.Defaults;
+import com.yahoo.vespa.flags.custom.RoleList;
import java.time.Instant;
import java.time.LocalDate;
@@ -14,8 +15,6 @@ import java.util.TreeMap;
import java.util.function.Predicate;
import static com.yahoo.vespa.flags.Dimension.APPLICATION;
-import static com.yahoo.vespa.flags.Dimension.ARCHITECTURE;
-import static com.yahoo.vespa.flags.Dimension.CLAVE;
import static com.yahoo.vespa.flags.Dimension.CLOUD_ACCOUNT;
import static com.yahoo.vespa.flags.Dimension.CONSOLE_USER_EMAIL;
import static com.yahoo.vespa.flags.Dimension.HOSTNAME;
@@ -417,6 +416,12 @@ public class Flags {
"Whether to use athenz as node identity provider",
"Takes effect on next identity refresh", HOSTNAME);
+ public static UnboundJacksonFlag<RoleList> ROLE_DEFINITIONS = defineJacksonFlag(
+ "role-definitions", RoleList.empty(), RoleList.class,
+ List.of("mortent"), "2024-04-05", "2024-10-01",
+ "Role definitions for the system",
+ "Takes effect immediately");
+
/** WARNING: public for testing: All flags should be defined in {@link Flags}. */
public static UnboundBooleanFlag defineFeatureFlag(String flagId, boolean defaultValue, List<String> owners,
String createdAt, String expiresAt, String description,
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/custom/Role.java b/flags/src/main/java/com/yahoo/vespa/flags/custom/Role.java
new file mode 100644
index 00000000000..93845b6f59d
--- /dev/null
+++ b/flags/src/main/java/com/yahoo/vespa/flags/custom/Role.java
@@ -0,0 +1,55 @@
+// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+package com.yahoo.vespa.flags.custom;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+import java.util.List;
+import java.util.Objects;
+
+@JsonIgnoreProperties(ignoreUnknown = true)
+@JsonInclude(value = JsonInclude.Include.NON_NULL)
+public class Role {
+ @JsonProperty("name")
+ private final String name;
+ @JsonProperty("members")
+ private final List<String> members;
+
+ @JsonCreator
+ public Role(@JsonProperty("name") String name, @JsonProperty("members") List<String> members) {
+ this.name = name;
+ this.members = members;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public List<String> getMembers() {
+ return members;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ Role that = (Role) o;
+ return Objects.equals(name, that.name) && Objects.equals(members, that.members);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(name, members);
+ }
+
+ @Override
+ public String toString() {
+ return "RoleDefinition{" +
+ "name='" + name + '\'' +
+ ", members=" + members +
+ '}';
+ }
+}
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/custom/RoleList.java b/flags/src/main/java/com/yahoo/vespa/flags/custom/RoleList.java
new file mode 100644
index 00000000000..4e3d14bf076
--- /dev/null
+++ b/flags/src/main/java/com/yahoo/vespa/flags/custom/RoleList.java
@@ -0,0 +1,45 @@
+// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+package com.yahoo.vespa.flags.custom;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+import java.util.List;
+import java.util.Objects;
+
+@JsonIgnoreProperties(ignoreUnknown = true)
+@JsonInclude(value = JsonInclude.Include.NON_NULL)
+public class RoleList {
+
+ @JsonProperty("roles")
+ List<Role> roles;
+
+ @JsonCreator
+ public RoleList(@JsonProperty("roles") List<Role> roles) {
+ this.roles = roles;
+ }
+
+ public List<Role> roles() {
+ return roles;
+ }
+
+ public static RoleList empty() {
+ return new RoleList(List.of());
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ RoleList roleList = (RoleList) o;
+ return Objects.equals(roles, roleList.roles);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(roles);
+ }
+}
diff --git a/flags/src/test/java/com/yahoo/vespa/flags/custom/RoleTest.java b/flags/src/test/java/com/yahoo/vespa/flags/custom/RoleTest.java
new file mode 100644
index 00000000000..2b1290f5222
--- /dev/null
+++ b/flags/src/test/java/com/yahoo/vespa/flags/custom/RoleTest.java
@@ -0,0 +1,56 @@
+// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+package com.yahoo.vespa.flags.custom;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.yahoo.test.json.Jackson;
+import org.junit.jupiter.api.Test;
+
+import java.util.List;
+import java.util.Optional;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+public class RoleTest {
+
+ @Test
+ void deSerializesCorrectly() throws JsonProcessingException {
+ String json = """
+ {
+ "roles": [
+ {
+ "name": "role1",
+ "members": ["u1@example.com", "u2@example.com"]
+ },
+ {
+ "name": "role2",
+ "members": [ "u1@example.com" ]
+ }
+ ]
+ }
+ """;
+ var mapper = Jackson.mapper();
+ RoleList roleList = mapper.readValue(json, RoleList.class);
+ assertEquals(2, roleList.roles().size());
+ Optional<Role> role1 = roleList.roles().stream()
+ .filter(r -> r.getName().equals("role1"))
+ .findFirst();
+ assertEquals(2, role1.get().getMembers().size());
+
+ Optional<Role> role2 = roleList.roles().stream()
+ .filter(r -> r.getName().equals("role2"))
+ .findFirst();
+ assertEquals(1, role2.get().getMembers().size());
+ }
+
+ @Test
+ void serializeCorrectly() throws JsonProcessingException {
+ Role role1 = new Role("role1", List.of("u1", "u2"));
+ Role role2 = new Role("role2", List.of("u1"));
+ RoleList roleList = new RoleList(List.of(role1, role2));
+ var mapper = Jackson.mapper();
+ String serialized = mapper.writeValueAsString(roleList);
+ RoleList deserialized = mapper.readValue(serialized, RoleList.class);
+ assertEquals(roleList, deserialized);
+ }
+} \ No newline at end of file
diff --git a/parent/pom.xml b/parent/pom.xml
index ad8e1e0dc13..4b64e0dceda 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -317,7 +317,7 @@
-->
<groupId>org.openrewrite.maven</groupId>
<artifactId>rewrite-maven-plugin</artifactId>
- <version>5.27.0</version>
+ <version>5.28.0</version>
<configuration>
<activeRecipes>
<recipe>org.openrewrite.java.testing.junit5.JUnit5BestPractices</recipe>
diff --git a/searchlib/src/tests/attribute/direct_multi_term_blueprint/direct_multi_term_blueprint_test.cpp b/searchlib/src/tests/attribute/direct_multi_term_blueprint/direct_multi_term_blueprint_test.cpp
index 1d66c59d2c9..196b1cbb475 100644
--- a/searchlib/src/tests/attribute/direct_multi_term_blueprint/direct_multi_term_blueprint_test.cpp
+++ b/searchlib/src/tests/attribute/direct_multi_term_blueprint/direct_multi_term_blueprint_test.cpp
@@ -435,4 +435,13 @@ TEST_P(DirectMultiTermBlueprintTest, hash_filter_with_string_folding_used_for_no
expect_hits({30, 31, 40, 41}, *itr);
}
+TEST_P(DirectMultiTermBlueprintTest, supports_more_than_64k_btree_iterators) {
+ setup(false, true);
+ std::vector<int64_t> term_values(std::numeric_limits<uint16_t>::max() + 1, 3);
+ add_terms(term_values);
+ auto itr = create_leaf_search();
+ EXPECT_THAT(itr->asString(), StartsWith(resolve_iterator_with_unpack()));
+ expect_hits({30, 31}, *itr);
+}
+
GTEST_MAIN_RUN_ALL_TESTS()
diff --git a/searchlib/src/vespa/searchlib/attribute/posting_iterator_pack.cpp b/searchlib/src/vespa/searchlib/attribute/posting_iterator_pack.cpp
index 662d77dd5d7..93bc4735916 100644
--- a/searchlib/src/vespa/searchlib/attribute/posting_iterator_pack.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/posting_iterator_pack.cpp
@@ -6,27 +6,34 @@
namespace search {
-template <typename IteratorType>
-PostingIteratorPack<IteratorType>::~PostingIteratorPack() = default;
+template <typename IteratorType, typename RefType>
+PostingIteratorPack<IteratorType, RefType>::~PostingIteratorPack() = default;
-template <typename IteratorType>
-PostingIteratorPack<IteratorType>::PostingIteratorPack(std::vector<IteratorType> &&children)
+template <typename IteratorType, typename RefType>
+PostingIteratorPack<IteratorType, RefType>::PostingIteratorPack(std::vector<IteratorType> &&children)
: _children(std::move(children))
{
assert(_children.size() <= std::numeric_limits<ref_t>::max());
}
-template <typename IteratorType>
+template <typename IteratorType, typename RefType>
+bool
+PostingIteratorPack<IteratorType, RefType>::can_handle_iterators(size_t num_iterators)
+{
+ return num_iterators <= std::numeric_limits<ref_t>::max();
+}
+
+template <typename IteratorType, typename RefType>
std::unique_ptr<BitVector>
-PostingIteratorPack<IteratorType>::get_hits(uint32_t begin_id, uint32_t end_id) {
+PostingIteratorPack<IteratorType, RefType>::get_hits(uint32_t begin_id, uint32_t end_id) {
BitVector::UP result(BitVector::create(begin_id, end_id));
or_hits_into(*result, begin_id);
return result;
}
-template <typename IteratorType>
+template <typename IteratorType, typename RefType>
void
-PostingIteratorPack<IteratorType>::or_hits_into(BitVector &result, uint32_t begin_id) {
+PostingIteratorPack<IteratorType, RefType>::or_hits_into(BitVector &result, uint32_t begin_id) {
for (size_t i = 0; i < size(); ++i) {
uint32_t docId = get_docid(i);
if (begin_id > docId) {
@@ -41,12 +48,21 @@ PostingIteratorPack<IteratorType>::or_hits_into(BitVector &result, uint32_t begi
template <>
int32_t
-PostingIteratorPack<DocidIterator>::get_weight(ref_t, uint32_t)
+PostingIteratorPack<DocidIterator, uint16_t>::get_weight(ref_t, uint32_t)
+{
+ return 1;
+}
+
+template <>
+int32_t
+PostingIteratorPack<DocidIterator, uint32_t>::get_weight(ref_t, uint32_t)
{
return 1;
}
-template class PostingIteratorPack<DocidIterator>;
-template class PostingIteratorPack<DocidWithWeightIterator>;
+template class PostingIteratorPack<DocidIterator, uint16_t>;
+template class PostingIteratorPack<DocidIterator, uint32_t>;
+template class PostingIteratorPack<DocidWithWeightIterator, uint16_t>;
+template class PostingIteratorPack<DocidWithWeightIterator, uint32_t>;
}
diff --git a/searchlib/src/vespa/searchlib/attribute/posting_iterator_pack.h b/searchlib/src/vespa/searchlib/attribute/posting_iterator_pack.h
index 28150730bad..7c6b85dd3ec 100644
--- a/searchlib/src/vespa/searchlib/attribute/posting_iterator_pack.h
+++ b/searchlib/src/vespa/searchlib/attribute/posting_iterator_pack.h
@@ -12,13 +12,13 @@ class BitVector;
/**
* Class that wraps a set of underlying low-level posting lists and provides an API to search in them.
*/
-template <typename IteratorType>
+template <typename IteratorType, typename RefType>
class PostingIteratorPack {
private:
std::vector<IteratorType> _children;
public:
- using ref_t = uint16_t;
+ using ref_t = RefType;
PostingIteratorPack() noexcept : _children() {}
PostingIteratorPack(PostingIteratorPack &&rhs) noexcept = default;
PostingIteratorPack &operator=(PostingIteratorPack &&rhs) noexcept = default;
@@ -26,6 +26,8 @@ public:
explicit PostingIteratorPack(std::vector<IteratorType> &&children);
~PostingIteratorPack();
+ static bool can_handle_iterators(size_t num_iterators);
+
uint32_t get_docid(ref_t ref) const {
return _children[ref].valid() ? _children[ref].getKey() : endDocId;
}
@@ -59,8 +61,10 @@ private:
}
};
-using DocidIteratorPack = PostingIteratorPack<DocidIterator>;
-using DocidWithWeightIteratorPack = PostingIteratorPack<DocidWithWeightIterator>;
+using DocidIteratorPack = PostingIteratorPack<DocidIterator, uint16_t>;
+using DocidIteratorPackUint32 = PostingIteratorPack<DocidIterator, uint32_t>;
+using DocidWithWeightIteratorPack = PostingIteratorPack<DocidWithWeightIterator, uint16_t>;
+using DocidWithWeightIteratorPackUint32 = PostingIteratorPack<DocidWithWeightIterator, uint32_t>;
}
diff --git a/searchlib/src/vespa/searchlib/queryeval/iterator_pack.cpp b/searchlib/src/vespa/searchlib/queryeval/iterator_pack.cpp
index fdea54424de..5b3a67d7b5e 100644
--- a/searchlib/src/vespa/searchlib/queryeval/iterator_pack.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/iterator_pack.cpp
@@ -8,18 +8,23 @@
namespace search::queryeval {
-SearchIteratorPack::~SearchIteratorPack() = default;
+template <typename RefType>
+SearchIteratorPackT<RefType>::~SearchIteratorPackT() = default;
-SearchIteratorPack::SearchIteratorPack() = default;
+template <typename RefType>
+SearchIteratorPackT<RefType>::SearchIteratorPackT() = default;
-SearchIteratorPack::SearchIteratorPack(SearchIteratorPack &&rhs) noexcept = default;
+template <typename RefType>
+SearchIteratorPackT<RefType>::SearchIteratorPackT(SearchIteratorPackT<RefType> &&rhs) noexcept = default;
-SearchIteratorPack &
-SearchIteratorPack::operator=(SearchIteratorPack &&rhs) noexcept = default;
+template <typename RefType>
+SearchIteratorPackT<RefType> &
+SearchIteratorPackT<RefType>::operator=(SearchIteratorPackT<RefType> &&rhs) noexcept = default;
-SearchIteratorPack::SearchIteratorPack(const std::vector<SearchIterator*> &children,
- const std::vector<fef::TermFieldMatchData*> &childMatch,
- MatchDataUP md)
+template <typename RefType>
+SearchIteratorPackT<RefType>::SearchIteratorPackT(const std::vector<SearchIterator*> &children,
+ const std::vector<fef::TermFieldMatchData*> &childMatch,
+ MatchDataUP md)
: _children(),
_childMatch(childMatch),
_md(std::move(md))
@@ -32,12 +37,21 @@ SearchIteratorPack::SearchIteratorPack(const std::vector<SearchIterator*> &child
assert(_children.size() <= std::numeric_limits<ref_t>::max());
}
-SearchIteratorPack::SearchIteratorPack(const std::vector<SearchIterator*> &children, MatchDataUP md)
- : SearchIteratorPack(children, std::vector<fef::TermFieldMatchData*>(), MatchDataUP(std::move(md)))
+template <typename RefType>
+SearchIteratorPackT<RefType>::SearchIteratorPackT(const std::vector<SearchIterator*> &children, MatchDataUP md)
+ : SearchIteratorPackT(children, std::vector<fef::TermFieldMatchData*>(), MatchDataUP(std::move(md)))
{ }
+template <typename RefType>
+bool
+SearchIteratorPackT<RefType>::can_handle_iterators(size_t num_iterators)
+{
+ return num_iterators <= std::numeric_limits<ref_t>::max();
+}
+
+template <typename RefType>
std::unique_ptr<BitVector>
-SearchIteratorPack::get_hits(uint32_t begin_id, uint32_t end_id) const {
+SearchIteratorPackT<RefType>::get_hits(uint32_t begin_id, uint32_t end_id) const {
BitVector::UP result = TermwiseHelper::orChildren(_children.begin(), _children.end(), begin_id);
if (! result ) {
result = BitVector::create(begin_id, end_id);
@@ -45,10 +59,13 @@ SearchIteratorPack::get_hits(uint32_t begin_id, uint32_t end_id) const {
return result;
}
+template <typename RefType>
void
-SearchIteratorPack::or_hits_into(BitVector &result, uint32_t begin_id) const {
+SearchIteratorPackT<RefType>::or_hits_into(BitVector &result, uint32_t begin_id) const {
TermwiseHelper::orChildren(result, _children.begin(), _children.end(), begin_id);
}
+template class SearchIteratorPackT<uint16_t>;
+template class SearchIteratorPackT<uint32_t>;
}
diff --git a/searchlib/src/vespa/searchlib/queryeval/iterator_pack.h b/searchlib/src/vespa/searchlib/queryeval/iterator_pack.h
index 0a1b140f28a..f05bf8e1adc 100644
--- a/searchlib/src/vespa/searchlib/queryeval/iterator_pack.h
+++ b/searchlib/src/vespa/searchlib/queryeval/iterator_pack.h
@@ -9,7 +9,8 @@ namespace search::fef { class MatchData; }
namespace search::queryeval {
-class SearchIteratorPack
+template <typename RefType>
+class SearchIteratorPackT
{
private:
using MatchDataUP = std::unique_ptr<fef::MatchData>;
@@ -18,19 +19,21 @@ private:
MatchDataUP _md;
public:
- using ref_t = uint16_t;
- SearchIteratorPack();
- ~SearchIteratorPack();
- SearchIteratorPack(SearchIteratorPack &&rhs) noexcept;
- SearchIteratorPack &operator=(SearchIteratorPack &&rhs) noexcept;
+ using ref_t = RefType;
+ SearchIteratorPackT();
+ ~SearchIteratorPackT();
+ SearchIteratorPackT(SearchIteratorPackT<RefType> &&rhs) noexcept;
+ SearchIteratorPackT<RefType> &operator=(SearchIteratorPackT<RefType> &&rhs) noexcept;
// TODO: use MultiSearch::Children to pass ownership
- SearchIteratorPack(const std::vector<SearchIterator*> &children,
- const std::vector<fef::TermFieldMatchData*> &childMatch,
- MatchDataUP md);
+ SearchIteratorPackT(const std::vector<SearchIterator*> &children,
+ const std::vector<fef::TermFieldMatchData*> &childMatch,
+ MatchDataUP md);
// TODO: use MultiSearch::Children to pass ownership
- SearchIteratorPack(const std::vector<SearchIterator*> &children, MatchDataUP md);
+ SearchIteratorPackT(const std::vector<SearchIterator*> &children, MatchDataUP md);
+
+ static bool can_handle_iterators(size_t num_iterators);
uint32_t get_docid(ref_t ref) const {
return _children[ref]->getDocId();
@@ -60,5 +63,8 @@ public:
void or_hits_into(BitVector &result, uint32_t begin_id) const;
};
+using SearchIteratorPack = SearchIteratorPackT<uint16_t>;
+using SearchIteratorPackUint32 = SearchIteratorPackT<uint32_t>;
+
}
diff --git a/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_search.cpp b/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_search.cpp
index 0be014474d0..6a93c2fe322 100644
--- a/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_search.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_search.cpp
@@ -196,11 +196,21 @@ WeightedSetTermSearch::create(const std::vector<SearchIterator *> &children,
fef::MatchData::UP match_data)
{
if (children.size() < 128) {
- return create_helper<vespalib::LeftArrayHeap, SearchIteratorPack>(tmd, is_filter_search, std::cref(weights),
- SearchIteratorPack(children, std::move(match_data)));
+ if (SearchIteratorPack::can_handle_iterators(children.size())) {
+ return create_helper<vespalib::LeftArrayHeap, SearchIteratorPack>(tmd, is_filter_search, std::cref(weights),
+ SearchIteratorPack(children, std::move(match_data)));
+ } else {
+ return create_helper<vespalib::LeftArrayHeap, SearchIteratorPackUint32>(tmd, is_filter_search, std::cref(weights),
+ SearchIteratorPackUint32(children, std::move(match_data)));
+ }
+ }
+ if (SearchIteratorPack::can_handle_iterators(children.size())) {
+ return create_helper<vespalib::LeftHeap, SearchIteratorPack>(tmd, is_filter_search, std::cref(weights),
+ SearchIteratorPack(children, std::move(match_data)));
+ } else {
+ return create_helper<vespalib::LeftHeap, SearchIteratorPackUint32>(tmd, is_filter_search, std::cref(weights),
+ SearchIteratorPackUint32(children, std::move(match_data)));
}
- return create_helper<vespalib::LeftHeap, SearchIteratorPack>(tmd, is_filter_search, std::cref(weights),
- SearchIteratorPack(children, std::move(match_data)));
}
namespace {
@@ -228,7 +238,11 @@ WeightedSetTermSearch::create(fef::TermFieldMatchData& tmd,
std::variant<std::reference_wrapper<const std::vector<int32_t>>, std::vector<int32_t>> weights,
std::vector<DocidIterator>&& iterators)
{
- return create_helper_resolve_pack<DocidIterator, DocidIteratorPack>(tmd, is_filter_search, std::move(weights), std::move(iterators));
+ if (DocidIteratorPack::can_handle_iterators(iterators.size())) {
+ return create_helper_resolve_pack<DocidIterator, DocidIteratorPack>(tmd, is_filter_search, std::move(weights), std::move(iterators));
+ } else {
+ return create_helper_resolve_pack<DocidIterator, DocidIteratorPackUint32>(tmd, is_filter_search, std::move(weights), std::move(iterators));
+ }
}
SearchIterator::UP
@@ -237,7 +251,11 @@ WeightedSetTermSearch::create(fef::TermFieldMatchData &tmd,
std::variant<std::reference_wrapper<const std::vector<int32_t>>, std::vector<int32_t>> weights,
std::vector<DocidWithWeightIterator> &&iterators)
{
- return create_helper_resolve_pack<DocidWithWeightIterator, DocidWithWeightIteratorPack>(tmd, is_filter_search, std::move(weights), std::move(iterators));
+ if (DocidWithWeightIteratorPack::can_handle_iterators(iterators.size())) {
+ return create_helper_resolve_pack<DocidWithWeightIterator, DocidWithWeightIteratorPack>(tmd, is_filter_search, std::move(weights), std::move(iterators));
+ } else {
+ return create_helper_resolve_pack<DocidWithWeightIterator, DocidWithWeightIteratorPackUint32>(tmd, is_filter_search, std::move(weights), std::move(iterators));
+ }
}
namespace {
diff --git a/vespa-dependencies-enforcer/allowed-maven-dependencies.txt b/vespa-dependencies-enforcer/allowed-maven-dependencies.txt
index fd7baf675b6..1ad000b6830 100644
--- a/vespa-dependencies-enforcer/allowed-maven-dependencies.txt
+++ b/vespa-dependencies-enforcer/allowed-maven-dependencies.txt
@@ -31,7 +31,7 @@ com.google.protobuf:protobuf-java:${protobuf.vespa.version}
com.ibm.icu:icu4j:${icu4j.vespa.version}
com.microsoft.onnxruntime:onnxruntime:${onnxruntime.vespa.version}
de.kherud:llama:${kherud.llama.vespa.version}
-com.sun.activation:javax.activation:1.2.0
+com.sun.activation:javax.activation:${sun.javax.activation.vespa.version}
com.sun.istack:istack-commons-runtime:4.1.2
com.sun.xml.bind:jaxb-core:${jaxb-core.vespa.version}
com.sun.xml.bind:jaxb-impl:${jaxb-impl.vespa.version}
@@ -74,7 +74,7 @@ io.prometheus:simpleclient_tracer_common:${prometheus.client.vespa.version}
io.prometheus:simpleclient_tracer_otel:${prometheus.client.vespa.version}
io.prometheus:simpleclient_tracer_otel_agent:${prometheus.client.vespa.version}
jakarta.inject:jakarta.inject-api:${jakarta.inject.vespa.version}
-javax.activation:javax.activation-api:1.2.0
+javax.activation:javax.activation-api:${javax.activation-api.vespa.version}
javax.annotation:javax.annotation-api:${javax.annotation.vespa.version}
javax.inject:javax.inject:${javax.inject.vespa.version}
javax.servlet:javax.servlet-api:${javax.servlet-api.vespa.version}
diff --git a/zkfacade/pom.xml b/zkfacade/pom.xml
index 02be1006bc3..6e46fe35801 100644
--- a/zkfacade/pom.xml
+++ b/zkfacade/pom.xml
@@ -77,8 +77,6 @@
<configuration>
<compilerArgs>
<arg>-Xlint:all</arg>
- <arg>-Xlint:-serial</arg>
- <arg>-Xlint:-try</arg>
</compilerArgs>
</configuration>
</plugin>
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/NodeCacheWrapper.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/NodeCacheWrapper.java
index d69ddb2f1c8..3be55af601d 100644
--- a/zkfacade/src/main/java/com/yahoo/vespa/curator/NodeCacheWrapper.java
+++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/NodeCacheWrapper.java
@@ -15,8 +15,10 @@ import java.io.IOException;
*/
class NodeCacheWrapper implements Curator.FileCache {
+ @SuppressWarnings("deprecation")
private final NodeCache wrapped;
+ @SuppressWarnings("deprecation")
public NodeCacheWrapper(CuratorFramework curatorFramework, String path, boolean dataIsCompressed) {
wrapped = new NodeCache(curatorFramework, path, dataIsCompressed);
}
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/PathChildrenCacheWrapper.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/PathChildrenCacheWrapper.java
index 644334a6fe0..9de672ee64d 100644
--- a/zkfacade/src/main/java/com/yahoo/vespa/curator/PathChildrenCacheWrapper.java
+++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/PathChildrenCacheWrapper.java
@@ -18,12 +18,15 @@ import java.util.concurrent.ExecutorService;
*/
class PathChildrenCacheWrapper implements Curator.DirectoryCache {
+ @SuppressWarnings("deprecation")
private final PathChildrenCache wrapped;
+ @SuppressWarnings("deprecation")
public PathChildrenCacheWrapper(CuratorFramework curatorFramework, String path, boolean cacheData, boolean dataIsCompressed, ExecutorService executorService) {
wrapped = new PathChildrenCache(curatorFramework, path, cacheData, dataIsCompressed, executorService);
}
+ @SuppressWarnings("deprecation")
@Override
public void start() {
try {
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/SingletonManager.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/SingletonManager.java
index 35fc9f06eec..f1ba9c54514 100644
--- a/zkfacade/src/main/java/com/yahoo/vespa/curator/SingletonManager.java
+++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/SingletonManager.java
@@ -100,7 +100,7 @@ class SingletonManager {
}
public synchronized CompletableFuture<?> shutdown() {
- CompletableFuture<?>[] futures = new CompletableFuture[registrations.size()];
+ CompletableFuture<?>[] futures = new CompletableFuture<?>[registrations.size()];
int i = 0;
for (SingletonWorker singleton : List.copyOf(registrations.keySet())) {
String id = registrations.get(singleton);
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/mock/MockCuratorFramework.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/mock/MockCuratorFramework.java
index b04cf5840de..4732016e428 100644
--- a/zkfacade/src/main/java/com/yahoo/vespa/curator/mock/MockCuratorFramework.java
+++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/mock/MockCuratorFramework.java
@@ -210,6 +210,7 @@ public class MockCuratorFramework implements CuratorFramework {
@Override
public GetConfigBuilder getConfig() { throw new UnsupportedOperationException("Not implemented in MockCurator"); }
+ @Deprecated
@Override
public CuratorTransaction inTransaction() {
return new MockCuratorTransactionFinal();
@@ -221,6 +222,7 @@ public class MockCuratorFramework implements CuratorFramework {
@Override
public TransactionOp transactionOp() { throw new UnsupportedOperationException("Not implemented in MockCurator"); }
+ @Deprecated
@Override
public RemoveWatchesBuilder watches() { throw new UnsupportedOperationException("Not implemented in MockCurator"); }
@@ -309,6 +311,7 @@ public class MockCuratorFramework implements CuratorFramework {
return new EnsurePath(path);
}
+ @Deprecated
@Override
public void clearWatcherReferences(Watcher watcher) {
throw new UnsupportedOperationException("Not implemented in MockCurator");
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/CuratorCreateOperation.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/CuratorCreateOperation.java
index 633fd9a7a20..99669007d06 100644
--- a/zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/CuratorCreateOperation.java
+++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/CuratorCreateOperation.java
@@ -34,6 +34,7 @@ class CuratorCreateOperation implements CuratorOperation {
}
@Override
+ @SuppressWarnings("deprecation")
public CuratorTransaction and(CuratorTransaction transaction) throws Exception {
if (data.isPresent()) {
return transaction.create().forPath(path, data.get()).and();
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/CuratorDeleteOperation.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/CuratorDeleteOperation.java
index aa1bffd4174..f4e1d909e21 100644
--- a/zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/CuratorDeleteOperation.java
+++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/CuratorDeleteOperation.java
@@ -33,6 +33,7 @@ class CuratorDeleteOperation implements CuratorOperation {
return false;
}
+ @SuppressWarnings("deprecation")
@Override
public CuratorTransaction and(CuratorTransaction transaction) throws Exception {
return transaction.delete().forPath(path).and();
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/CuratorOperation.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/CuratorOperation.java
index 7c332f4675c..17d09bcbcde 100644
--- a/zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/CuratorOperation.java
+++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/CuratorOperation.java
@@ -20,6 +20,7 @@ public interface CuratorOperation extends Transaction.Operation {
* @return the transaction, for chaining.
* @throws Exception if unable to create transaction for this operation.
*/
+ @SuppressWarnings("deprecation")
CuratorTransaction and(CuratorTransaction transaction) throws Exception;
/**
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/CuratorSetDataOperation.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/CuratorSetDataOperation.java
index 116daf1e359..b8cfa54623e 100644
--- a/zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/CuratorSetDataOperation.java
+++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/CuratorSetDataOperation.java
@@ -28,6 +28,7 @@ class CuratorSetDataOperation implements CuratorOperation {
}
@Override
+ @SuppressWarnings("deprecation")
public CuratorTransaction and(CuratorTransaction transaction) throws Exception {
return transaction.setData().forPath(path, data).and();
}
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/CuratorTransaction.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/CuratorTransaction.java
index 3026a90cea7..21a2071900d 100644
--- a/zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/CuratorTransaction.java
+++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/CuratorTransaction.java
@@ -52,6 +52,7 @@ public class CuratorTransaction extends AbstractTransaction {
/** Commits this transaction. If it is not already prepared this will prepare it first */
@Override
+ @SuppressWarnings("deprecation")
public void commit() {
try {
if ( ! prepared)
diff --git a/zookeeper-server/zookeeper-server-3.9.2/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperAdminImpl.java b/zookeeper-server/zookeeper-server-3.9.2/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperAdminImpl.java
index 1f15c758583..c74a020bcf4 100644
--- a/zookeeper-server/zookeeper-server-3.9.2/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperAdminImpl.java
+++ b/zookeeper-server/zookeeper-server-3.9.2/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperAdminImpl.java
@@ -26,6 +26,8 @@ public class VespaZooKeeperAdminImpl implements VespaZooKeeperAdmin {
private static final Logger log = java.util.logging.Logger.getLogger(VespaZooKeeperAdminImpl.class.getName());
+
+ @SuppressWarnings("try")
@Override
public void reconfigure(String connectionSpec, String servers) throws ReconfigException {
try (ZooKeeperAdmin zooKeeperAdmin = createAdmin(connectionSpec)) {
@@ -58,6 +60,7 @@ public class VespaZooKeeperAdminImpl implements VespaZooKeeperAdmin {
}
/** Creates a node in zookeeper, with hostname as part of node name, this ensures that server is up and working before returning */
+ @SuppressWarnings("try")
void createDummyNode(ZookeeperServerConfig zookeeperServerConfig) {
int sleepTime = 2_000;
try (ZooKeeperAdmin zooKeeperAdmin = createAdmin(localConnectionSpec(zookeeperServerConfig))) {
diff --git a/zookeeper-server/zookeeper-server/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperAdminImpl.java b/zookeeper-server/zookeeper-server/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperAdminImpl.java
index 1f15c758583..891a35582b3 100644
--- a/zookeeper-server/zookeeper-server/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperAdminImpl.java
+++ b/zookeeper-server/zookeeper-server/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperAdminImpl.java
@@ -26,6 +26,7 @@ public class VespaZooKeeperAdminImpl implements VespaZooKeeperAdmin {
private static final Logger log = java.util.logging.Logger.getLogger(VespaZooKeeperAdminImpl.class.getName());
+ @SuppressWarnings("try")
@Override
public void reconfigure(String connectionSpec, String servers) throws ReconfigException {
try (ZooKeeperAdmin zooKeeperAdmin = createAdmin(connectionSpec)) {
@@ -58,6 +59,7 @@ public class VespaZooKeeperAdminImpl implements VespaZooKeeperAdmin {
}
/** Creates a node in zookeeper, with hostname as part of node name, this ensures that server is up and working before returning */
+ @SuppressWarnings("try")
void createDummyNode(ZookeeperServerConfig zookeeperServerConfig) {
int sleepTime = 2_000;
try (ZooKeeperAdmin zooKeeperAdmin = createAdmin(localConnectionSpec(zookeeperServerConfig))) {